题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1013
方法:大数据模拟
思路:这个题坑就坑在他没有说是大数据题,所以按照常规思路做出来了,很顺利地wa了。考虑大数据时也比较简单,用数组来模拟,由于数组中各位数字第一轮加起来后数据就很小了,所以可以进一步使用原来的小数据方法进行处理。这个题网上大神有一种很巧妙地思路,那就是对9取模,这样做将进一步减少代码量。
难点:大数据模拟。
#include <cstdio>
#include <string.h>
const int N = 1000;
using namespace std;
int numroot(int num)
{
int value = 0;;
while(num)
{
value += num%10;
num /= 10;
}
return value;
}
int main()
{
char num[N];
while(~scanf("%s",num))
{
if(strcmp(num,"0") == 0) break;
int nummer = 0;
int l = strlen(num);
for(int i = 0;i < l;i++)
nummer += num[i]-'0';
int ans = nummer;
while(ans/10 != 0)
{
ans = numroot(ans);
}
printf("%d\n",ans);
}
}