题意是说给你一个数,把这个数的所有位上的数字加起来(个位+十位+......),如果加起来大于10就继续拆分开加,一直加到小于10,输出这个数。感觉好像小时候玩的游戏= =,好吧,说正题,一道水题,不过还没简单到int直接过,这属于一个大数处理的问题,还是要用字符串读入,然后拆开一位一位加。
没什么好说的= =下面代码
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { char s[1005]; int i; long long sum,t; int len; while(scanf("%s",s)!=EOF) { if(strcmp(s,"0")==0) break; sum=0; len=strlen(s); for(i=0;i<len;i++) { sum=sum+(s[i]-'0'); if(sum>=10) { t=sum; sum=0; while(t>0) { sum=sum+(t%10); t=t/10; if(sum>=10) { t=sum; sum=0; } } } } cout<<sum<<endl; } return 0; }
