HDU1013 Digital Roots
题目: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; } }