您的位置:首页 > 其它

HDU 1013 Digital Roots

2016-09-25 14:50 363 查看
题解:九余数的定理:一个数对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;
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: