HDU-1163Eddy's digital Roots,九余定理的另一种写法!
下午做了NYOJ-424Eddy's digital Roots后才正式接触了九余定理,不过这题可不是用的九余定理做的。网上的博客千篇一律,所以本篇就不发篇幅过多介绍九余定理了;
但还是要知道什么是九余定理:
九余数定理
一个数对九取余后的结果称为九余数。
一个数的各位数字之和相加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加)
简单的说就是:一个整数模9的结果与这个整数的各位数字之和模9的结果相同;
以前做题不知道有这个定理一般暴力就过了,求数位和也不复杂,只不过更省时间而已;
先来看看HDU-1163Eddy's digital Roots,博主是在NYOJ上做的这题时间限制是3s;
题意:求N^N的数位和(结果是个位数),开始打表找规律也没发现什么规律,于是想了另外一种方法:可以发现n的数位和的n次方再求数位和其实就等于n的n次方的数位和;比如:n=11,结果应该是5;11的数位和等于2,而2^11的数位和就等于5;进一步发现:
F(2^11)=F(8*8*8*4)=F(8*8)*F(8)*F(4)=F(64)*F(8)*F(4)=F(10)*F(8)*F(4)=F(80)*F(4)=F(8)*F(4)=F(32)=F(5)=5;
F(11^11)=F(11)*F(11)*...*F(11)=F(2)*F(2)*...*F(2)=F(2)^11=F(2^11);
所以此题就可以先求出N的数位和然后只需一层循环一直乘以N的数位和,注意当乘积大于10时需要再进行求数位和然后再重复操作;最后别忘了将循环里得到的值再求数位和;
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
while(~scanf("%d",&n)&&n)
{
int sum=n;
while(sum>=10)//将n的数位和求出;
{
int x=0;
while(sum)
{
x+=sum%10;
sum/=10;
}
sum=x;
}
int d=sum;
for(i=2; i<=n; i++)
{
while(sum>=10)
{
int x=0;
while(sum)
{
x+=sum%10;
sum/=10;
}
sum=x;
}
sum*=d;
}
while(sum>=10)//最后得到的值再求数位和;
{
int x=0;
while(sum)
{
x+=sum%10;
sum/=10;
}
sum=x;
}
printf("%d\n",sum);
}
return 0;
}
上述代码在NYOJ上运行时间是1680ms,时限3s;而HDU运行时间0ms,时限1s,真是神奇呵!;
运用九余定理AC代码:确实很简洁方便!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,temp;
while(~scanf("%d",&n)&&n)
{
temp=n;
for(int i=2;i<=n;i++)
temp=(temp%9*n)%9;
if(temp==0)//此处需要注意;
printf("9\n");
else
printf("%d\n",temp%9);
}
return 0;
}
下面再来看NYOJ-485A*B Problem,此题题意很简单,就是求A*B的数位和;很明显方法很多,但是时限是1s,所以。。。所以这题只能用九余定理做吗?应该是的,我用九余定理运行时间986ms勉强过了,而用分治法超时了。。。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
long long n,m;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&n,&m);
if(m==0||n==0)//这里需注意一下特殊情况;
{
printf("0\n");
continue;
}
n%=9;
m%=9;
long long x=(n*m)%9;
if(x==0)
printf("9\n");
else
printf("%lld\n",x);
}
return 0;
}
HDU-1163Eddy's digital Roots,九余定理的另一种写法!的更多相关文章
- HDU——1163Eddy's digital Roots(九余数定理+同余定理)
Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- 51nod 1433 0和5【数论/九余定理】
1433 0和5 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 小K手中有n张牌,每张牌上有一个一位数的数,这个 ...
- HDOJ 1163 Eddy's digital Roots 九余数定理+简单数论
我在网上看了一些大牛的题解,有些知识点不是太清楚, 因此再次整理了一下. 转载链接: http://blog.csdn.net/iamskying/article/details/4738838 ht ...
- FZU 1057 a^b 【数论/九余定理】
Accept: 1164 Submit: 3722Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description 对于任 ...
- hdu 5585 Numbers【大数+同余定理】
Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Digital Roots:高精度
C - Digital Roots Description The digital root of a positive integer is found by summing the digits ...
- Eddy's digital Roots
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission ...
- 如何运用同余定理求余数【hdoj 1212 Big Number【大数求余数】】
Big Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- J - Judge(快速幂)(同余定理)
J - Judge Time Limit:1000MS Memory Limit:131072KB 64bit IO Format:%lld & %llu Submit S ...
随机推荐
- ACboy needs your help HDU - 1712
ACboy needs your help HDU - 1712 ans[i][j]表示前i门课共花j时间最大收益.对于第i门课,可以花k(0<=k<=j)时间,那么之前i-1门课共花j- ...
- ZooKeeper通过ACL修复未授权访问漏洞
默认情况下ZooKeeper允许匿名访问,因此在安全漏洞扫描中暴漏未授权访问漏洞. 一.参考资料 <ZooKeeper 笔记(5) ACL(Access Control List)访问控制列表& ...
- Service官方教程(2)*IntentService与Service示例、onStartCommand()3个返回值的含义。
1.Creating a Started Service A started service is one that another component starts by calling start ...
- Android插件开发
插件开发的概念: 对于一个功能特别多,代码量特别大的App比如支付宝.360手机助手来说,如果把所有的功能和代码都写在一个App中,就会造成App体积过于庞大,用户下载体验差,不方便测试,业务.模块耦 ...
- IIS7 网站发布
选择“网站” 添加网站
- 函数的返回值return
'''1.什么是返回值 返回值是一个函数的处理结果 2.为什么要有返回值 如果我们需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须有返回值 3.函数的返回值的应用 函数的返回值用retur ...
- iOS Programming Localization 本地化
iOS Programming Localization 本地化 Internationalization is making sure your native cultural informatio ...
- [经典面试题]包含T全部元素的最小子窗口
题目描述 给定一个包含一系列字符的集合T和字符串S,请在字符串S中找到一个最小的窗口,这个窗口中必须包含T中的所有字符. 例如, S = "ADOBECODEBANC" T ...
- Node.js——获取文件上传进度
https://juejin.im/post/5a77a46cf265da4e78327552?utm_medium=fe&utm_source=weixinqun
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作 下一篇:Farseer.net轻量级ORM开源 ...