我在网上看了一些大牛的题解,有些知识点不是太清楚, 因此再次整理了一下。

转载链接:

http://blog.csdn.net/iamskying/article/details/4738838

http://www.2cto.com/kf/201405/297531.html

题目描述:
求n^n次的digital root(数根),例如root(67)=6+7=root(13)=1+3=4;

一类解法:

求解思路:
现在分析一个问题,假设将十位数为a,个位数为b的一个整数表示为ab,则推导得
ab*ab = (a*10+b)*(a*10+b) = 100*a*a+10*2*a*b+b*b
根据上式可得:root(ab*ab) = a*a+2*a*b+b*b = (a+b)*(a+b);[公式一] 
同理也可证得:root(ab*ab*ab) = (a+b)*(a+b)*(a+b);[公式二] 
可以看出,N个相同整数的乘积总值的树根 = 每一项元素的树根的乘积

再设另外一个整数cd,且cd!=ab
ab*cd = (a*10+b)*(c*10+d) = 100*a*c+10*(a*d+b*c)+b*d
根据上式可得:root(ab*cd) = a*c+a*d+b*c+b*d = (a+b)*(c+d);[公式三] 
可见,对于两个不相同整数也成立。

最后将上面证得的结果一般化:
N个整数的乘积总值的数根 = 每个项元素的数根的乘积

提示:本题只需根据[公式三] 即可AC.

二类解法:

九余数定理:

一个数字n的树根 == n%9(n == 0 则为9)

运用9余数定理 + 公式3    我们就可以很简单的写出程序

  1. #include <iostream>>
  2. using namespace std;
  3. int main()
  4. {
  5. int n;
  6. while( cin >> n, n)
  7. {
  8. int sum = ;
  9.  
  10. for(int i=; i<=n; i++)
  11. {
  12. sum = (n*sum)%;
  13. if(!sum)
  14. sum = ;
  15. }
  16. cout << sum << endl;
  17. }
  18. return ;
  19. }

HDOJ 1163 Eddy's digital Roots 九余数定理+简单数论的更多相关文章

  1. HDOJ 1163 Eddy's digital Roots(九余数定理的应用)

    Problem Description The digital root of a positive integer is found by summing the digits of the int ...

  2. HDU 1163 Eddy's digital Roots

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  3. hdu 1163 Eddy's digital Roots 【九余数定理】

    http://acm.hdu.edu.cn/showproblem.php?pid=1163 九余数定理: 如果一个数的各个数位上的数字之和能被9整除,那么这个数能被9整除:如果一个数各个数位上的数字 ...

  4. Hdu1163 Eddy's digitai Roots(九余数定理)

    题目大意: 给定一个正整数,根据一定的规则求出该数的“数根”,其规则如下: 例如给定 数字 24,将24的各个位上的数字“分离”,分别得到数字 2 和 4,而2+4=6: 因为 6 < 10,所 ...

  5. HDU 1163 Eddy's digital Roots(模)

    HDU 1163 题意简单,求n^n的(1)各数位的和,一旦和大于9,和再重复步骤(1),直到和小于10. //方法一:就是求模9的余数嘛! (228) leizh007 2012-03-26 21: ...

  6. Eddy's digital Roots(九余数定理)

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  7. HDU-1163 Eddy's digital Roots(九余数定理)

    Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  8. Eddy's digital Roots

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  9. HDU-1163Eddy's digital Roots,九余定理的另一种写法!

    下午做了NYOJ-424Eddy's digital Roots后才正式接触了九余定理,不过这题可不是用的九余定理做的.网上的博客千篇一律,所以本篇就不发篇幅过多介绍九余定理了: 但还是要知道什么是九 ...

随机推荐

  1. poj2993 poj2669

    扯淡题. 2993 #include <iostream> #include <stdio.h> #include <string> #include <st ...

  2. Python分类统计数据

    在数据的常见分布中,有一种是一对多存储的数据,即一个是key,其他改key对应的多个value.例如气象数据等,每天有很多组,又或者是一个球员,他每天得多少分等等.我做这个东西有三种方法,即:常规编程 ...

  3. 1247 排排站 USACO(查分+hash)

    /* 暴力查分 n*n */ #include<cstdio> #include<cstring> #include<iostream> #define maxn ...

  4. C#解leetcode 11. Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  5. .net框架介绍

    .net 一般指 .net Framework框架,是一种平台,一种技术 C# 是一种编程语言,可以开发基于.net平台的应用 Java 既是一种技术,也是一种语言 .net可以开发桌面应用程序    ...

  6. My.Ioc 代码示例——使用观察者机制捕获注册项状态的变化

    在 My.Ioc 中,要想在服务注销/注册时获得通知,可以通过订阅 ObjectBuilderRegistered 和 ObjectBuilderUnregistering 这两个事件来实现.但是,使 ...

  7. .NET获取机器信息

    /// <summary> /// using System.Web; /// using System.Management; /// </summary> public s ...

  8. 解决第三方DLL没有强签名

    -----转载:http://blog.csdn.net/zyming0815/article/details/5939090 创建一个新的随机密钥对:sn -k myTest.snk 第一步: 将D ...

  9. 【原】push过快的错误 (Pushing the same view controller instance more than once is not supported)

    今天在点击按钮push viewController 时,控制台报错: Terminating app due to uncaught exception 'NSInvalidArgumentExce ...

  10. Swift - 22 - 循环结构

    //: Playground - noun: a place where people can play import UIKit // for-in for i in -99...99 { i * ...