Problem Description
ztr loves research Math.One day,He thought about the “Lower Edition” of triangle equation set.Such as n=x2−y2.
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) indicating the number of test cases.
For each test case:each line contains a positive integer ,n<=1018.
Output
If there be a positive integer solutions,print True,else print False
Sample Input
4
6
25
81
105
Sample Output
False
True
True
True
Hint
For the fourth case,
105=132−82
分析:由于n达到10^18,暴力的话也不好做。
n=(k+x)2−(k)2
,即
n=2∗x∗k+k2
.当n为奇数,x=1,k=1,n最小为3;n为任意大于3的奇数都可表达。当n为偶数时,x=1,k=2,最小n=8。把
k=2∗m
代入,得
n=4∗(x∗m+m)
.得n为4的倍数。
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
long long t;
while(n--)
{
scanf("%lld",&t);
int flag=0;
if(t%2!=0&&t>=3)
flag=1;
else if(t%4==0&&t>=8)
flag=1;
if(!flag)
cout<<"False"<<endl;
else
cout<<"True"<<endl;
}
return 0;
}