【发布时间】:2015-10-12 06:38:23
【问题描述】:
考虑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;
}
【问题讨论】:
-
你需要一些可以处理大整数的东西。参见例如Big integer in C or C++
标签: c optimization project