正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节。
求小于等于n的数中,倒数循环节长度最长的那个数,
假如存在多个最优的答案,输出所有答案中最大的那个数。
1/6= 0.1(6) 循环节长度为1
1/7= 0.(142857) 循环节长度为6
1/9= 0.(1) 循环节长度为1
#include<iostream> #include<cstring> using namespace std; int res[1005]; int main(){ memset(res,0,sizeof(res)); for (int t=1; t<=1000; t++){ int i=t; while (i%2==0){ ____(1)_________ } while (i%5==0){ ____(2)_________ } int n=1; for (int j=1; j<=i; j++){ n*=10; ______(3)________ if (n==1){ res[t]=j; ____(4)________ } } } int n; scanf("%d",&n); int ans=0,maxn=0; for (int i=1; i<=n; i++){ if (res[i]>maxn){ ans=i; maxn=res[i]; } } printf("%d",ans); return 0; }