HDU 5675 ztr loves math

2164 ワード


    ztr loves math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 96    Accepted Submission(s): 53
Problem Description
ztr loves research Math.One day,He thought about the "Lower Edition"of  triangle equation set.Such as n=x2−y2n=x^{2}-y^{2}.
He wanted to know that ,for a given number n,is there a positive integer solutions?
 
Input
There are T test cases. The first line of input contains an positive integer T(T<=106)T(T<=10^{6}) indicating the number of test cases.
For each test case:each line contains a positive integer ,n<=1018n <=10^{18}.
 
Output
If there be a positive integer solutions,print TrueTrue,else print FalseFalse
 
Sample Input
4 6 25 81 105
 
Sample Output
False True True True
Hint For the fourth case,$105 = 13^{2}-8^{2}$  
 
Source
 BestCoder Round #82 (div.2) 
 
Recommend
wange2014   |   We have carefully selected several similar problems for you:  5679 5678 5677 5676 5674
数学に関する知識:
この二つの数をそれぞれm、nとし、m>nとする.すなわち、智慧数=m 2-n 2=(m+n)(m+n)(m+n)(m+n)と非0の自然数である.∧m+nとm-nは二つの自然数である.一つの数が智慧数であるかどうかを判断するには、この数を因数分解して二つの整数の積に分解し、この二つの数が二つの非0の自然数の和と差と書くことができるかどうかを見ることができる.(k+1)2-k 2=2 k+1,(K+1)2-k(k-1)2=4 k、それぞれが1より大きい奇数とそれぞれが4より大きい4の倍数の数はすべて知恵数で、4で除算された残りの数が2の偶数はすべて知恵数ではありませんて、最小の知恵数は3で、5から、知恵数は5、7、8、9、11、12、13、15、16、17、19、20...つまり2つの奇数、1つの4の倍数で、3つの1つのグループは順次並べていきます.明らかに1は“知恵数”ではありません4 k=(k+1)2−(k−1)2−(k−1)2であるため、4より大きく、4で割り切れる数はすべて「知恵数」であり、4は「知恵数」ではなく「知恵数」であり、x 2−y 2=(x+y)×(x-y)(x,y∈N)x,yパリティが同じである場合,(x+y)×(x-y)は4で割り切れる.x,yのパリティが異なる場合,(x+y)*(x-y)は奇数であるため,4 k+2のような形の数は「知恵数」ではなく,自然数列の4つの自然数のうち3つだけが「知恵数」である.その後,連続4つの数ごとに3つの「知恵数」がある.
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
    __int64 n,t;
	scanf("%I64d",&t);
	while(t--)
	{
		scanf("%I64d",&n);
		if(n<3||n==4||n%4==2)
		{
			printf("False
"); } else { printf("True
"); } } return 0; }