前面我写了一篇,居然修改不了,只好继续开一篇写下去

超级传送门(这次是传送到上篇的位置):

http://blog.csdn.net/nikekkaa/article/details/6629858

上一篇用了找规律的方法,现在继续分析另外的想法:

求解思路:
现在分析一个问题,假设将十位数为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个整数的乘积总值的数根 = 每个项元素的数根的乘积

然后我居然想,是不是要找一个办法出来求root(n)的n次方的结果,后来才发现,n<10000,完全可以一个循环求出来,

所以虽然代码要讲究空间,和效率,但是在允许的条件下,一定不要忘记计算机的高效暴力,在比赛的时候更是哪个方法容易实现就用哪个

然后下面是AC代码:

#include<iostream>
using namespace std;
int findroot(int a)
{
int sum = 0;
while(a > 0)
{
sum += (a % 10);
a /= 10;
}
if(sum / 10 != 0)
{
return findroot(sum);
}
else
return sum;
}
int main()
{
int n;
int temp;
int i;
int ans;
while(scanf("%d",&n) != EOF)
{
if(n == 0) break;
temp = findroot(n);
ans = 1;
for(i=0;i<n;i++)
{
ans = findroot(ans * temp);
}
printf("%d\n",ans);
}
return 0;
}

hdoj 1163 Eddy's digital Roots(数学问题,继续分析) .相关推荐

  1. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】

    问题链接:HDU1163 Eddy's digital Roots. 问题简述:参见上述链接. 问题分析:计算n^n的数根,一要快,二要简单.使用快速模幂计算,加上数论中的九余数定理就完美了. 程序说 ...

  2. HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】(废除!!!)

    本文废除,参见下述链接. 参考链接:HDU1163 Eddy's digital Roots[快速模幂+九余数定理+水题] 问题链接:HDU1163 Eddy's digital Roots. 问题简 ...

  3. HDU1013 POJ1519 Digital Roots(解法二)

    该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的余数,若余数为0则结果为9. 问题链接:HDU1013 POJ1519 Digital Roots.入门练习题,用C语言编写 ...

  4. HDU1013 POJ1519 Digital Roots

    该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的余数,若余数为0则结果为9. 问题链接:HDU1013 POJ1519 Digital Roots.基础训练题,用C语言编写 ...

  5. HDU1013 POJ1519 Digital Roots(解法三)【废除!!!】

    本文废除!!! 参见链接:HDU1013 POJ1519 UVALive2085 Digital Roots[数根+水题] 该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的 ...

  6. HDU1013 POJ1519 Digital Roots(解法二)【废除!!!】

    本文废除!!! 参见链接:HDU1013 POJ1519 UVALive2085 Digital Roots[数根+水题] 该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的 ...

  7. HDU1013 POJ1519 Digital Roots(解法三)

    该问题的最佳解法是利用数论的9余数定理来计算数根.一个数的数根等于该数的9的余数,若余数为0则结果为9. 问题链接:HDU1013 POJ1519 Digital Roots.入门练习题,用C语言编写 ...

  8. Digital Roots

    题目的链接为: http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1028 题目为: Dig ...

  9. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  10. 从数学计算上分析人脑与电脑差异

    从数学计算上分析人脑与电脑差异 我们举一个简单的例子:如何实现1+2+3+--+100? 也许你会轻松的回答: 1+100=101 2+99 = 101 3+98 = 101 -- 50+51=101 ...

最新文章

  1. JavaScript专题之模拟实现call和apply
  2. 轻松搭建基于 SpringBoot Vue 的 Web 商城应用
  3. MathType输入补集符号的步骤有哪些
  4. 对PASCAL VOC 数据集进行数据增强
  5. 在python中使用grpc和protobuf
  6. 带有Spring Cloud Config和JHipster的Java微服务
  7. php是不是面向对象编程,PHP面向对象编程入门
  8. 无法将 DBNull.Value 强制转换为类型“System.DateTime”。请使用可空类型
  9. 不小心合并了icloud通讯录_苹果手机怎么恢复通讯录联系人号码?原来方法竟如此简单!...
  10. 搞懂nginx的proxy模块-01
  11. uva_1422 Processor
  12. Python安装第三方库临时使用国内源
  13. 吴恩达神经网络和深度学习-学习笔记-14-学习率衰减
  14. 京东质检报告要求和检测项目-京东质检报告怎么弄
  15. 利用oc门或od门实现线与_OC和OD门、线与和线或
  16. Android聊天室(源码)
  17. PHP在线网课问答题库搜索,推荐一个大学mooc网课答案题库在线查询公众号
  18. Git代码管理流程(分支、fork、tag)
  19. MATLAB :xlim 、 ylim 、zlim简介
  20. cmd下获取指定进程名的pid号,并通过taskkill结束该进程

热门文章

  1. 360儿童手表显示服务器错误,360儿童卫士刷机常见问题与解决方法
  2. 基于HC32L13X系列的YModem升级方案
  3. 《信息安全技术》实验三 数字证书应用
  4. Java8 Stream流 - 高效快速的处理集合
  5. 多个优速快递的物流信息是怎么批量查询的
  6. 几个生僻字:烎,囧、槑、玊、奣、嘦、勥、巭、嫑、恏、兲、氼、忈、炛
  7. js文件 格式_robots文件只能放在网站根目录吗?
  8. qq2018内测android,社交无止境:QQ for Android 4.7内测版
  9. labview—电子表格文件读写
  10. unbuntu网卡配置