/ / 题库 /

小数的最大循环节

小数的最大循环节

居然调整不了时限。

题目背景
一道简单的模拟题,就是代码有些难写(std只有52行(没有压行),不知道为什么没有人做出来)

注:#1,#2,#4有坑!!!
87799原创。如反馈问题或想要数据请私信。

如果你想通过前面的测试点,那么是红,如果你想AC最后一个测试点,那么是橙。

如你100ms之内通过不了,但自己实测200ms之内通过了,请私信。

注:我看到有人开一堆优化,没用的,对于最后一个测试点,你不能从头枚举。
updata:

2020年3月13日写好题面。

2020年3月14日造完数据,完成该题。

2020年3月15日全部缩小至100ms,最后一个测试点只有5分(比赛期间会调整到15分)。87799想到了一种特别的方法可以ac。不需卡常,不需o2。

数据随机,太水了,测了几种骗分算法,最多的居然得了39分。

或许有O(n)及以下的做法?请私信。

题目描述
1/2= 0.5

1/3= 0.(3)

1/4=0.25

1/5=0.2

1/6= 0.1(6)

1/7= 0.(142857)

1/8= 0.125

1/9= 0.(1)

1/10= 0.1

0.1(6)表示0.1666...,它的循环节长度为1.我们看到,1/7有长为6的循环节.

在小于n的数中,求出1/d拥有最长循环值的数(如果有多个,输出最小的就行)。(d>=1)

输入格式
n

输出格式
在小于n的数中,求出1/d拥有最长循环值的数。

输入输出样例
输入 #1复制
30
输出 #1复制
29
输入 #2复制
6
输出 #2复制
3
说明/提示
1<=n<=12345

对于最后一个点,n=123456,但时间限制扩大至3333ms。其余时间限制为100ms。已测试,可以ac。

123分才是AC!!!

如果题目看不懂那个括号是啥意思,就看这里:
括号表示循环节,如0.(142857)=0.142857142857142857......

0.1(6)=0.16666......

样例2说明:符合要求的有3,6,最小的是3。

样例1说明:1÷29=0.0(3448275862068965517241379310),你可以用计算器算,没有其它更优的。

信息

ID
1005
难度
18
分类
模拟 点击显示
标签
递交数
4
已通过
1
通过率
25%
上传者