码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1013 Digital Roots

时间:2016-09-25 15:56:06      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

题解:九余数的定理:一个数对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

标签:

原文地址:http://www.cnblogs.com/lzeffort/p/5905970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!