51nod-【1035 最长的循环节】
2016-12-01 16:04
288 查看
1035 最长的循环节
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
收藏
关注
正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。
1/6= 0.1(6) 循环节长度为1
1/7= 0.(142857) 循环节长度为6
1/9= 0.(1) 循环节长度为1
Input
Output
Input示例
Output示例
7
循环节:主要有2个定理:
1、1<=b<a;求b/a的循环节,网上有很多是这样的: 10^k=1mod(a);
这里的a需要把里面2,5这2个因子剔除
为什么是这样呢?其实他是有规律的a,b是互质的
举个栗子:1/7,2/7,3/7,4/7,5/7;他们的循环节的长度都是一样的
所以我们只需要求出1/7的循环节就行了;当然求循环节就是模拟
除法
定理2:如果1<=b<a,a没有2或5的质因子,并且a与b互质,
那么b/a 的循环节位数必整除欧拉函数(a)
基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题
收藏
关注
正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数,假如存在多个最优的答案,输出所有答案中最大的那个数。
1/6= 0.1(6) 循环节长度为1
1/7= 0.(142857) 循环节长度为6
1/9= 0.(1) 循环节长度为1
Input
输入n(10 <= n <= 1000)
Output
输出<=n的数中倒数循环节长度最长的那个数
Input示例
10
Output示例
7
循环节:主要有2个定理:
1、1<=b<a;求b/a的循环节,网上有很多是这样的: 10^k=1mod(a);
这里的a需要把里面2,5这2个因子剔除
为什么是这样呢?其实他是有规律的a,b是互质的
举个栗子:1/7,2/7,3/7,4/7,5/7;他们的循环节的长度都是一样的
所以我们只需要求出1/7的循环节就行了;当然求循环节就是模拟
除法
定理2:如果1<=b<a,a没有2或5的质因子,并且a与b互质,
那么b/a 的循环节位数必整除欧拉函数(a)
#include<cstdio> int main() { int n,i,sum=0,ans; scanf("%d",&n); for(i=2;i<=n;++i) { int temp=i; while(temp%2==0) temp/=2; while(temp%5==0) temp/=5; int g=1,tsum=0; if(temp==1) tsum=1; else { do { g*=10; g%=temp; ++tsum; }while(g!=1); } if(tsum>sum) { sum=tsum; ans=i; } } printf("%d\n",ans); return 0; }
相关文章推荐
- 51nod 1035:最长的循环节
- 51nod 1035最长循环节
- 51nod 1035 最长的循环节
- 51nod 1035:最长的循环节
- 51NOD 1035 最长的循环节
- 51nod 1035 最长的循环节 数学
- 51Nod - 1035 最长的循环节
- 51nod 1035 最长的循环节
- 51nod 1035 最长的循环节
- 51Nod-点头网-1035 最长的循环节
- [51Nod 1035 最长的循环节] 循环小数的性质
- 51Nod 1035 最长的循环节
- 51nod 1035 最长的循环节【模拟除法】
- 51nod 1035 最长的循环节(无限小数的循环节)
- 【51Nod】1035 最长的循环节
- 51nod 1035 最长的循环节
- 51Nod-1035-最长的循环节
- 51Nod 1035 最长的循环节
- 51nod 1035:最长的循环节
- 51NOD 1035 最长的循环节(数论)