HDU 1013 [Digital Roots]九余数定理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1013

题目大意:求数字根。

给一个数,不断进行各位数字相加的操作,直到结果为一位数,输出结果。

关键思想:九余数定理的应用(一个数各位之和与该数模9同余),很巧妙。证明请看http://blog.csdn.net/ray0354315/article/details/53991199

代码如下:

//九余数定理(为了建立最初各位和与数字根的联系) 
#include <iostream>
using namespace std;

int main(){
	int sum;
	char temp;
	//不用数组的循环控制 
	while(1){ 
		sum=0;
		while(temp=getchar()){
			if(temp=='\n'){
				cout<<(sum%9==0?9:sum%9)<<endl;//考虑最后结果若为9,模9就成0了,但此时数字根实际上为9 
				break;
			}
			else sum+=temp-'0';
			if(sum==0)return 0;//0+9则结束。 
		}
	}
	return 0;
}

  

    原文作者:哇咔咔咔
    原文地址: https://www.cnblogs.com/G-M-WuJieMatrix/p/6406333.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞