问题 3771 --最长的循环节(完善程序)

3771: 最长的循环节(完善程序)★★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 87  解决: 67
[提交][状态][命题人:]

题目描述

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

输入

输入n(10 <= n <= 1000)

输出

输出小于等于n的数中倒数循环节长度最长的那个数
样例输入
Copy
10
样例输出
Copy
7

提示

来源

[提交][状态]