Project Euler 16: Power digit sum.

来源:互联网 发布:win10用c语言编程软件 编辑:程序博客网 时间:2024/06/11 09:26

215 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.What is the sum of the digits of the number 21000?

这个问题主要的问题是解决大数据存储。当一个节点的数据于某个值时便增加一个节点来存储就好像进位一样。

例如2^10=1024则在第一个节点存储24然后新建一个节点用来存储1;存储空间中a[0]=24,a[1]=1。

 

代码:

#include<iostream>#include<vector>using namespace std;int main(){long long sum = 0;vector<int>num;num.push_back(2);std::cout<<num[0];for(int i= 0;i!=999;i++){for(int j=num.size();j>0;j--){num[j-1]=num[j-1]*2;if(num[j-1]>999){if(j==num.size()){num.push_back(0);}num[j]=num[j]+num[j-1]/1000;num[j-1]=num[j-1]%1000;}}}for(int j = num.size();j>0;j--){sum = sum+num[j-1]%10;while((num[j-1]=num[j-1]/10)>0){sum = sum+num[j-1]%10;}}cout<<sum<<endl;}

原创粉丝点击