ZOJ 1115 Digital Roots

时间:2023-03-09 09:20:15
ZOJ 1115 Digital Roots

原题链接

题目大意:给一个数字,每一位相加求和,不断重复过程,直到剩一位数字。

解法:考虑到输入的数字可以很大,把输入按照字符串格式读入,再逐位处理。

参考代码:

#include <iostream>
#include <string> using namespace std; int main(){
string str;
int sum,sum2,i;
while(cin>>str&&str!="0"){
sum=0;
for(i=0;i<str.size();i++){
sum+=(str[i]-'0');
}
do{
sum2=0;
while(sum>0){
sum2+=sum%10;
sum/=10;
}
if(sum2<10){
cout<<sum2<<endl;
break;
}
else
sum=sum2;
}while(sum>=10);
}
return 0;
}