【问题标题】:consider x^i+y^i=z^i x<=y<=z<=m and 2<=i<=n (m and n are inputs) m can vary from 5 to 100 n can vary from 2 to 100考虑 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:23
【问题描述】:

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

【问题讨论】:

标签: c optimization project


【解决方案1】:

您需要在 C 中实现 Big Integer,因为您的预测结果可能会高于普通 Integer,即使 long long int 也能够存储。你可以自己写一个,也可以使用已经写好的,比如here

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2012-11-23
    • 2022-01-13
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多