HDU6441(费马大定理)
听队友说过结论:a^n + b^n = c^n在n > 2时无解。
勾股那里本菜数学不好直接暴举了Orz。
跟大家学一波勾股数的构造:a是奇数时,tmp = a / 2; b = (tmp + 1) * tmp * 2; c = b + 1; 举例:5、12、13.
a是偶数时,tmp = a / 2 - 1; b = (tmp + 2) * tmp; c = b + 2; 举例:8、15、17.
1 #include <cstdio> 2 #include <cmath> 3 4 int T, n, a, l, r; 5 6 void solve(int a) { 7 for (int i = 1; i < a; i++) { 8 if (a * a % i == 0) { 9 int t = a * a / i; 10 if ((t - i) % 2 == 0) { 11 l = (t - i) / 2; 12 r = (t + i) / 2; 13 return; 14 } 15 } 16 } 17 } 18 19 int main() { 20 for (scanf("%d", &T); T; T--) { 21 scanf("%d %d", &n, &a); 22 23 if (n > 2 || n == 0) printf("-1 -1\n"); 24 else if (n == 1) printf("%d %d\n", 1, a + 1); 25 else { 26 l = -1, r = -1; 27 solve(a); 28 printf("%d %d\n", l, r); 29 } 30 } 31 return 0; 32 }