zoukankan      html  css  js  c++  java
  • 【u020】Couple number

    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

    任何一个整数N都能表示成另外两个整数a和b的平方差吗?如果能,那么这个数N就叫做Couple number。你的工作就是判断一个数N是不是Couple number。

    【输入格式】

    仅一行,两个长整型范围内的整数n1和n2,之间用1个空格隔开。

    【输出格式】

    输出在n1到n2范围内有多少个Couple number。 注意:包括n1和n2两个数,且n1<n2,n2 -="" n1="" <="10" 000="" 000。=""

    【数据规模】

    Sample Input1

    1 10

    Sample Output1

    7

    【题解】
    这是道数论的题目;需要考虑一番。
    首先假设当前判断的数字是i;
    i=x^2-y^2;利用平方差公式可化为
    i=(x+y)*(x-y);
    然后令a=(x+y),b=(x-y);
    a=x+y ···①
    b=x-y ···②
    ①+②
    x=(a+b)/2;
    ①-②
    y=(a-b)/2;
    要让正数x,y存在。则a+b,a-b一定是两个偶数。则a,b一定是同奇数或同偶数。
    i=a*b;
    即让乘的a和b同奇数或同偶数。
    首先如果i为奇数。则一定可以。
    因为i=1*i,1为奇数,i也为奇数!
    然后是偶数。
    偶数有两类。一类是这样的
    2*(2n+1),2*(2n);
    这两类中后者是一定可以的。因为2为偶数,(2n)也为偶数。则满足ab同奇或同偶。
    然后前者是2*一个奇数的形式,奇数是不可能由一个偶数乘出来的,所以(2n+1)不能分解成2*(...)的形式。
    这就确定了前者所属的偶数类型只能由一个奇数乘一个偶数得来。
    这是不符合题意的。
    然后如果概括一下就是:奇数+4的倍数(包括0);
    如果出现负数按照正数的处理即可。x^2-y^2中,x和y可以调换顺序啊!
    【代码】
    #include <cstdio>
    
    int n1, n2,s,t,tot = 0;
    
    int main()
    {
    	scanf("%d%d", &n1, &n2); //输入区间范围。
    	s = n1; t = n2;//确定起点和终点
    	if (n1 < 0 && n2 < 0)//如果都小于0,则取反调换顺序
    		s = -n2, t = -n1;
    	if (n1 < 0 && n2>=0)//如果一个小于0一个大于等于0(注意等于),则分成两段[n1..0)[0,n2]
    	{
    		s = 0; t = n2;
    		for (int i = 1; i <= -n1; i++)//先加[n1..0)这一段。
    			if ((i % 2) == 1 || (i % 4) != 2)//奇数和4的倍数。
    				tot++;
    	}
    	for (int i = s; i <= t; i++)//执行需要另外加的部分。
    		if ((i % 2) == 1 || (i % 4) != 2)
    			tot++;
    	printf("%d
    ", tot);
    	return 0;
    }


    
    
    
    
    
    


    
    
    
    
    
    

    Sample Output1

    7
  • 相关阅读:
    struts2-dojo-plugin-2.3.1.2.jar!/struts-plugin.xml:29:119
    谈论高并发(十二)分析java.util.concurrent.atomic.AtomicStampedReference看看如何解决源代码CAS的ABA问题
    linux安装QQ
    Android:创建耐磨应用
    僵尸网络
    几个比较好的网站
    几点基于Web日志的Webshell检测思路
    Redis异常JedisConnectionException:Read timed out解决笔记
    ELk 几篇好的文章
    深入了解linux下的last命令及其数据源
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632289.html
Copyright © 2011-2022 走看看