-1

我检查了答案,与我的答案相差不大,但这仍然是一个错误。有人可以检查我的编码,看看是什么错误导致我得到 1319 的值吗?

#include <iostream>
#include <vector>
using namespace std;

int main()
{
int k = 0;
int o = 0;
vector<int> n(1,0);
n[0] = 1;
while (k < 1001)
{
    for (int l = 0; l < n.size(); l++)
        n[l] = n[l] * 2;
    for (int l = 0; l < n.size(); l++)
    {
        if (n[l] >= 1000000)
        {
            int m;
            if (l == n.size() - 1)
                n.resize(n.size() + 1);
            m = n[l] / 1000000;
            n[l] = n[l] % 1000000;
            n[l+1] = n[l+1] + m;
        }
    }
    k++;
}
for (int l = 0; l < n.size(); l++)
    o = o + int (n[l]/1000000) + int ((n[l] % 1000000) / 100000) + int ((n[l] % 100000) / 10000) + int ((n[l] % 10000) / 1000) + int ((n[l] % 1000) / 100) + int ((n[l] % 100) / 10) + n[l] % 10;
cout << o;
cin >> k;
return 0;

}

4

2 回答 2

1

做了

while (k < 1000)

在外循环条件下。

while循环中,您从2^k向量中的表示开始,其值k在进入循环时具有。所以你实际上是在计算2^1001而不是2^1000.

于 2013-03-26T20:42:45.800 回答
0

在 C++ 中解决这个问题是数据类型限制,“int”不足以计算 2^1000。我已经为此解决了一个原型,即数字 2^4 的数字总和。2 ^ 4 的幂是 16,数字总和是 7。希望代码能够指导你。

         #include<iostream.h>
         #include<conio.h>

         void main()
             {
                 int count=1;

           int power=1;
                 int sum=0;
   while(count<=4)
   {   count++;
   power=power*2;

    }
   cout<<"The power is"<<power<<"\t";

    while(power!=0)
     {
           int digit=power%10;
        sum=sum+digit;
        power=power/10;

     }


     cout<<"The sum of digits is"<<sum;
     getch();
    }
于 2013-04-02T08:25:45.377 回答