费马大定理:a^n + b^n = c^n在n > 2无解
只考虑n为1和2的情况
n为1,则b=1,c=a+1
n为2,构造勾股数: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.
#include <cstdio> typedef long long ll; int main() { int T; scanf("%d", &T); while (T--) { ll n, a, b, c; scanf("%lld%lld", &n, &a); if (n == 1) { printf("%lld %lld ", 1, 1+a); } else if (n == 2) { if (a % 2 == 1) { ll tmp = (a-1)/2; b = 2*tmp*tmp+2*tmp; c = b+1; printf("%lld %lld ", b, c); } else { ll tmp = a/2 - 1; b = tmp*tmp + 2*tmp; c = b + 2; printf("%lld %lld ", b, c); } } else printf("-1 -1 "); } return 0; }