题目大意:
给出a, n
求出b, c使得
a
n
a^n
an
+
+
+
b
n
b^n
bn
=
=
=
c
n
c^n
cn
解题思路:
特判如下
由费马大定理得:
当
n
n
n
>
>
>
2
2
2时无解
n
n
n
=
=
=
0
0
0时当然也是无解的了
当
n
n
n
=
=
=
1
1
1时, 可推出:
b
b
b
=
=
=
1
1
1,
c
c
c
=
=
=
a
a
a
+
+
+
1
1
1
那就只剩下n = 2的情况了
套进去就是
a
2
a^2
a2
+
+
+
b
2
b^2
b2
=
=
=
c
2
c^2
c2
就是求勾股数
然后就有:
令x = a / 2.0
当a为奇数时:
b
=
a
∗
x
−
0.5
b\ =\ a\ *\ x\ -\ 0.5
b = a ∗ x − 0.5
c
=
a
∗
x
+
0.5
c\ =\ a\ *\ x\ +\ 0.5
c = a ∗ x + 0.5
当a为偶数时:
b
=
x
∗
x
−
1
b\ =\ x\ *\ x\ -\ 1
b = x ∗ x − 1
c
=
x
∗
x
+
1
c\ =\ x\ *\ x\ +\ 1
c = x ∗ x + 1
Accepted code:
#include<cstdio>
int T, a, n;
int main() {
scanf("%d", &T);
while (T--) {
scanf("%d %d", &n, &a);
if (n == 0 || n > 2) { printf("-1 -1\n"); continue; }
if (n == 1) { printf("1 %d\n", a+1); continue; }
double x = a / 2.0;
if (a % 2) { //判断a的奇偶性
printf("%.0lf %.0lf\n", a * x - 0.5, a * x + 0.5);
} else {
printf("%.0lf %.0lf\n", x * x - 1, x * x + 1);
}
}
return 0;
}