数位拆解、字符串的操作
题目大意:对于给定的一个正数,将它的个位十位百位(以此类推)拿出来作为单独的数字然后累加,如果加起来的数小于 10 则输出,大于 10 就继续按照规则运算。
解题思路:刚开始想的是用数位拆解,把接收的数不断拆解然后求和进行,但自己调试结果是正确的,但是代码一直无法通过,看过别人的思路后才知道输入可能过大用字符串存储然后拆解。刚开始看题的时候就在想为什么输入没有限定范围,这个坑还是挺磨人的。
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
while(cin>>a && a!="0"){
int ans = 0;
for(int i=0;i<a.length();i++){
ans += a[i] - '0';
if(ans >= 10){
ans = ans/10 + ans%10;
}
}
cout<<ans<<endl;
}
return 0;
}
网友评论