题目:
对于一个整数,我们定义它的数位和为各个数位的和。比如456789456789的数位和为4+5+6+7+8+94+5+6+7+8+9也就是3939;对于3939,我们依然可以求数位和,为1212;继续求,数位和为33,接下来无论再怎么求数位和,结果都是33,不会改变了。
输入一个正整数a�,按照上述方式,我们对这个a�不停地求数位和,直到结果不超过99为止。要求把所有的中间结果输出。
比如a=456789�=456789,那么它的数位和是3939。继续对3939求数位和,得到1212,继续对1212操作,得到33,就停止了。
输入格式
一个正整数a�。
输出格式
若干行,为a�不停地求数位和,直到不超过99为止的所有结果。
样例输入1
456789
样例输出1
39
12
3
样例输入2
86471648912748124790174817001304807
样例输出2
149
14
5
数据范围与限制
时间限制:1s
空间限制:1GB
50%50%的数据,1≤a≤1091≤�≤109。
80%80%的数据,1≤a≤10181≤�≤1018。
100%100%的数据,1≤a≤1010001≤�≤101000。
提示
109109在int范围内,10181018在long long范围内。
代码:
#include<bits/stdc++.h>
using namespace std;
char s[1010];
int l,a,sum;
int main(){
scanf("%s",s+1);
l=strlen(s+1);
a=0;
for(int i=1;i<=l;i++){
a+=s[i]-'0';
}
cout<<a<<endl;
while(a>9){
sum=0;
while(a>0){
sum+=a%10;
a/=10;
}
a=sum;
cout<<a<<endl;
}
}
思路:
进行一次就把这个数取一次位,超过一就继续,没有结束