题目:HDU1013
题意为读入一个整数求他的Digital Roots
注意:读入的整数可能很长,用int ,long long可能都会WA,考虑使用字符串。
方法一:每读入一个字符,将其转化为数字后与sum相加,sum为最后的结果。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
char s[1000];
while(scanf("%s",s))
{
if(s[0]=='0') break;
int sum=0;
for(int i=0;s[i]!='\0';i++)
{
sum+=s[i]-'0';
if(sum>9)sum=sum%10+sum/10;
}
cout<<sum<<endl;
}
}
方法二:利用数论的结论:Digtial Roots=(sum-1)%9+1
代码:
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
char s[1000];
while(scanf("%s",s))
{
if(s[0]=='0') break;
int sum=0;
for(int i=0;s[i];i++)
{
sum+=s[i]-'0';
//if(sum>9)sum=sum%10+sum/10;
}
cout<<(sum-1)%9+1<<endl;
}
}