题意是说给你一个数,把这个数的所有位上的数字加起来(个位+十位+......),如果加起来大于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;
}