首页 > 代码库 > HDU 1013 Digital Roots

HDU 1013 Digital Roots

题解:九余数的定理:一个数对9取余等于这个数各位数相加的和对9取余,例如  123 %9 = (1+2+3)%9,所以题目中要求把一个数的各个位加起来直到是个不大于9的数,就等于直接对这个数对9取余。

#include<iostream>#include<cstdio>#include <cstring>#include<algorithm>using namespace std;/****  大数不能使用int digital(int n){   if(n < 10)     return n;   int sum = 0;   while(n%10){     sum += n%10;     n /= 10;   }   return digital(sum);}*********//***采用九余定理****/int main(){    char a[100005];    while(scanf("%s",a)){        int len = strlen(a);        if(len == 1 && a[0] == ‘0‘)            break;        int sum =0;        for(int i=0; i<len; i++){                sum += a[i] -‘0‘;            }         printf("%d\n", ((sum-1)%9)+1);    }    return 0;}

  

HDU 1013 Digital Roots