HDU1163【九余数定理】【水题】
来源:互联网 发布:剑倚天下骑宠进阶数据 编辑:程序博客网 时间:2024/06/05 05:14
Eddy's digital Roots
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4632 Accepted Submission(s): 2578
Problem Description
The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two or more digits, those digits are summed and the process is repeated. This is continued as long as necessary to obtain a single digit.
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
The Eddy's easy problem is that : give you the n,want you to find the n^n's digital Roots.
Input
The input file will contain a list of positive integers n, one per line. The end of the input will be indicated by an integer value of zero. Notice:For each integer in the input n(n<10000).
Output
Output n^n's digital root on a separate line of the output.
Sample Input
2
4
0
Sample Output
4
4
Author
eddy
题目大意:给你一个正整数n,把n的各位上数字加起来,如果结果小于10,则所得结果为n的数字根,如果大于10,则再把上边所得结果各位上的数字加起来。现在给你一个数n,求n^n的数字根
思路:一看数据规模10000^10000,肯定要把n拆分掉。通过找规律发现,求n^n的数字根可转化为先求n的数
字根a,然后求a*n的原根,赋给a,接着依次求a*n,求n-1次,就得到了n^n的数字根。
例如:求5^5的数字
第一种方法:5^5 = 3125 3 + 1 + 2 + 5 = 11 1 + 1 = 2 最终结果是2
第二种方法:5的数字根是5 5*5*5*5*5 = 25*5*5*5
相当于25的数字根7 *5*5*5 = 35*5*5 = 8*5*5 = 40*5 = 4*5 = 20 = 2
最终结果为2
对于第二种方法可以用九余数定理,更加简单。
九余数定理:一个数N各位数字的和,对9取余等于这个数对9取余
<span style="font-family:Microsoft YaHei;font-size:18px;">//不使用九余数定理#include<stdio.h>int main(){ int n; while(~scanf("%d", &n) && n) { int a = n; int b = 0; while(a > 0) { b += a % 10; a /= 10; } if(b != 0) a = b; int x = a; for(int i = 1; i < n; i++) { a *= x; b = 0; while(a > 0) { b += a % 10; a /= 10; } if(b != 0) a = b; } b = 0; while(a > 0) { b += a % 10; a /= 10; } if(b != 0) a = b; printf("%d\n",a); } return 0;}</span>
//使用九余数定理#include <stdio.h>int main(){ int n,a,sum,i; while(scanf("%d",&n)&&n) { sum=1; for(i=0;i<n;i++) { sum=sum*n%9; } if(sum==0) printf("9\n"); else printf("%d\n",sum); } return 0;}
0 0
- HDU1163【九余数定理】【水题】
- HDU1163九余数定理
- HDU1163 Eddy's digital Roots【九余数定理】
- HDU1163 Eddy's digital Roots(快速幂+九余数定理)
- Hdu1163 Eddy's digitai Roots(九余数定理)
- HDU1163 快速幂+九余数
- HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】
- 九余数定理
- 九余数定理
- 九余数定理
- 九余数定理
- 九余数定理
- 九余数定理扩展
- HDU-1013九余数定理
- nyoj 485 九余数定理
- nyoj 424 && 485(九余数定理)
- 九余数定理及证明 hdu 1163
- hdu 1163(九余数定理)
- NDIS函数简明手册
- Atitit. Attilax企业框架 AEF的发展里程总结
- easyui datagrid控制显示进度条
- Netty实现原理浅析
- du 和 df的不同
- HDU1163【九余数定理】【水题】
- CKeditor的使用以及一些应该注意的问题
- 回文词和镜像串的判断
- 环境变量设置
- 朴素的UNIX之-调度器前传
- 怎么用jquery检查图片是否已经加载即加载是否成功
- eclipse如何自动提示
- 朴素的UNIX之-调度器细节
- 今日半价 3.6.0 开发总结