E - Digital Roots HDU - 1013

wa了两遍:

(1)没有弄清楚输入数据的范围,实际上是字符串输入,数字很大。

(2)此题太水,没有标数据范围。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>

#define ll long long
using namespace std;
#define maxn 1000000000
char s[maxn];

int main()
{
    while(~scanf("%s",s))
    {
        if(s[0]=='0')
            break;
        ll sum=0;
        ll len=strlen(s);

        //(1)
        for(int i=0; i<len; i++)
        {
            sum+=s[i]-'0';
        }

        ll tmp=sum;
        while(sum>=10)
        {
            sum=0;
            while(tmp)
            {
                sum+=tmp%10;
                tmp/=10;
                
            }
            tmp=sum;
        }
        cout<<sum<<endl;
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/pipitongkw1/p/10662261.html