考虑x ^ i + y ^ i = z ^ i x< = y< = z< = m并且2< = i< = n(m和n是输入)m可以在5到100之间变化n可以从2变化到100

时间:2015-10-12 06:38:24

标签: c optimization project

考虑x^i+y^i=z^ix<=y<=z<=m2<=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;
}

1 个答案:

答案 0 :(得分:2)

您需要在C中实现Big Integer,因为您的预测结果可能会高于正常的整数,即使long long int能够存储。您可以自己编写一个或使用已编写的文档,如here