我检查了答案,但我的答案并没有太多关闭,但仍然是一个错误。有人可以检查我的编码,看看是什么错误导致我得到值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;
}
答案 0 :(得分:1)
成功
while (k < 1000)
在外循环条件下。
在while
循环中,您首先在向量中使用值2^k
的{{1}}表示进入循环。因此,您实际上是在计算k
而不是2^1001
。
答案 1 :(得分: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();
}