HDU ACM 5675 ztr loves math

题意:给定一个正整数n,是否存在n=x^2-y^2(n<=10^18)。


分析:

原式可写成:n=(k+x)^2-k^2(x,k均为正整数)。

展开得n=2*x*k+k^2。

由此可知要使上式成立存在两种情况(因为2*x*k必为偶数,而k^2可为奇偶):

1、当k^2为奇数时,n为奇数,所以当n为奇数时,存在题目所给式子(1除外,因为当x,k均取1时最小,n为3,。。。。。。)。

2、当k^2为偶数时,n为偶数,令k=2g;则有n=2*x*(2g)+(2g)^2=4(xg+g^2);此时只要n为4的倍数,存在题目所给式子,最小为8(因为当x,g均为1时,n为8)


总结:所以当n为奇数并且不等于1时,以及当n为4的倍数且不为4时,存在题目的式子。

你可能感兴趣的:(C++,ACM,C++11,算发)