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
  • 相关阅读:
    HDU 4348 To the moon(可持久化线段树)
    HDU 5875 Function 大连网络赛 线段树
    HDU 5877 2016大连网络赛 Weak Pair(树状数组,线段树,动态开点,启发式合并,可持久化线段树)
    HDU 5876 大连网络赛 Sparse Graph
    HDU 5701 中位数计数 百度之星初赛
    CodeForces 708B Recover the String
    Java实现 蓝桥杯 算法提高 套正方形(暴力)
    ASP.NET生成验证码
    ASP.NET生成验证码
    ASP.NET生成验证码
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7632289.html
Copyright © 2011-2022 走看看