hdu 4143 A Simple Problem
2013-09-23 17:26
351 查看
2011百校联动“菜鸟杯”程序设计公开赛
题意:求一个最小的x使得y^2 = x^2 + n, x ,y,n均为整数, 且1<=n<<10^9.
分解因式(y-x)*(y+x) = n,令i=y-x枚举i从根号n到1
x=(n/i-i)/2,且i越大,x越小,所以当满足条件时即为所求x值
题意:求一个最小的x使得y^2 = x^2 + n, x ,y,n均为整数, 且1<=n<<10^9.
分解因式(y-x)*(y+x) = n,令i=y-x枚举i从根号n到1
x=(n/i-i)/2,且i越大,x越小,所以当满足条件时即为所求x值
#include <cstdio> #include <cmath> int main() { int t, n; scanf("%d", &t); while(t--) { scanf("%d", &n); int ans = inf; int k = (int)sqrt(1.0*n); for(int i=k; i>=1; i--) if(n%i==0 && n/i!=i && (n/i-i)%2 == 0) { ans = (n/i-i)/2; break; } if(ans == inf) printf("-1\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- HDU 4143 A Simple Problem(数论-水题)
- HDU 4143 A Simple Problem
- HDU-4143 A Simple Problem
- HDU 4143 A Simple Problem (枚举暴力)
- HDU 4143 A Simple Problem
- hdu 4143 A Simple Problem
- HDU 4143 A Simple Problem(枚举)
- HDU 4143 A Simple Problem
- HDU 4143 A Simple Problem
- HDU 4143 A Simple Problem
- hdu 4143 A Simple Problem(数学)
- HDU 4143 A Simple Problem(数论-水题)
- HDU 5974 A Simple Math Problem 数学
- A Simple Math Problem hdu 1757
- hdu 5974 A Simple Math Problem
- HDU 4267 A Simple Problem with Integers
- hdu 1757 A Simple Math Problem 矩阵优化+快速幂
- HDU 4267 A Simple Problem with Integers (55棵线段树更新维护)
- HDU 4267 A Simple Problem with Integers(线段树)
- HDU 5974 A Simple Math Problem