51nod 1035 最长的循环节

来源:互联网 发布:电脑管家数据恢复 编辑:程序博客网 时间:2024/06/07 12:28


正整数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

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[1111],ans[1111];void init(){int n,i,j,t,index;for(i=1;i<=1000;i++) {n=i;while(n%2==0) n=n/2;while(n%5==0) n=n/5;t=1;for(j=1;j<=i;j++) {t=t*10;t=t%n;if(t==1) {a[i]=j;break;}}}ans[1]=1;index=1;for(i=2;i<=1000;i++) {if(a[i]>a[index]) {index=i;}ans[i]=index;}}int main(){init();int n,mx;while(~scanf("%d",&n)) {printf("%d\n",ans[n]);}return 0;}






0 0
原创粉丝点击