考虑x^i+y^i=z^i
,x<=y<=z<=m
和2<=i<=n
(m和n是输入)
m可以在5到100之间变化
n可以在2到100之间变化
我怎样才能解决这个问题。我有一个解决方案但是对于n和m的值不太可行,如80或更多,并开始给出错误的结果:(
int main()
{
int m, n;
long long int x, y, z, j;
long long int xe, ye, ze, se;
long long int sum = 0;
scanf("%d", &m);
scanf("%d", &n);
for (j = 2; j <= n; j++)
{
for (x = 0; x <= m; x++)
{
for (y = x; y <= m; y++)
{
for (z = y; z <= m; z++)
{
xe = pow(x, j);
ye = pow(y, j);
ze = pow(z, j);
se = (xe + ye);
if (ze == se)
{
printf("\n i = %lld", j);
sum++;
}
}
}
}
}
printf("sum= %lld ", sum);
return 0;
}
答案 0 :(得分:2)
您需要在C中实现Big Integer,因为您的预测结果可能会高于正常的整数,即使long long int
能够存储。您可以自己编写一个或使用已编写的文档,如here。