USACO又卡住了...好纠结~~~
这题纯水题了..题目意思是说给一个数..每位相加得到一个数..若这个数只有一位..那么就是答案...否则就要对得到的新数继续做这个操作..开始就这么写模拟..结果WA了..看discuss..晕倒..最大有2000位的数..题目中又没有哪里说清楚...好吧..最多2000位..假设每位都是9..那么第二次后最长的用int也存得下..所以就是最开始读进来用字符串..后面就是纯模拟了..
Program:
#include<iostream>
using namespace std;
char s[5005];
int main()
{
int k,ans;
while (gets(s))
{
if (s[0]=='0') break;
ans=0;
k=strlen(s)-1;
while (k>=0)
{
ans+=s[k]-'0';
k--;
}
while (ans>9)
{
k=0;
while (ans>0)
{
k+=ans%10;
ans/=10;
}
ans=k;
}
printf("%d\n",ans);
}
return 0;
}