您的位置:首页 > 其它

51nod 1035 最长的循环节

2015-11-09 19:01 555 查看
正整数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
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: