杭电1013 Digital Roots

杭电1013 http://acm.hdu.edu.cn/showproblem.php?pid=1013

杭电1013 Digital Roots

 

题目大意:

所谓数根。即数字各个位置之和。

若和大于10,则需要再次求和,直到小于10.

 

AC代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <memory.h>
#include <cmath>
#include <stack>
//#define DEBUG
using namespace std;
typedef long long ll;
char a[10000]; //为了防止超范围
int main() {
    while(cin>>a) {
        if(a[0]=='0') return 0;
        int len=strlen(a);
        int sum=0;
        for(int i=0;i<len;i++) {
            sum+=a[i]-'0';
        }
        if(sum<=9) cout<<sum<<endl;
        else cout<<sum%9<<endl<<(sum-1)%9+1<<endl;  //“九余数定理”?

    }
    return 0;
}