#include<bits/stdc++.h>
using namespace std;
int main()
{
string n;
int sum;
while(cin>>n)
{
if(n=="0")
break;
while(n.size()>1)
{
stringstream a;
sum=0;
for(int i=0;i<n.size();i++)
sum+=n[i]-'0';
a<<sum;
a>>n;
if(sum<10)
{
cout<<sum<<endl;
break;
}
}
}
}
本题看了原题的注意描述,发现输入小于20位数,long long int都会爆表,于是想到使用刚学到的stringstream连续判断是否sum<10,如果小于 则输出,即本题答案。
刚开始输入的时候定义了int类型的n 输入的数字变的很大以后就报表了 一直在寻找下面为什么会爆表,到了后来发现上面定义的为int类型 上面就爆表了下面就不用看了 所以改成string类型 用if break就解决了这个问题。