#include<stdio.h>
#include<math.h>
int main() {
int n, i, x, y,a,b;
i = 0;
scanf("%d", &n);
a = n / 2;
b = sqrt(n);
for (x = 1; x <= a; x++) {
for (y = 1; y <= b; y++) {
if (2*x + pow(y, 2) == n) i++;
}
}
printf("%d\n", i);
return 0;
}
为什么不会超时呢?n是10^18,你外层循环都超时了