倒数的循环节
单位分数指分子为1的分数。分母为2至10的单位分数的十进制表示如下所示:
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.166666…,括号内表示有一位循环节。可以看出,1/7有六位循环节。
找出正整数d < 1000,其倒数的十进制表示小数部分有最长的循环节。
#include<iostream>
#include<set>
using namespace std;
int main()
{
set<int> s;
bool flag = true;
int res = 0;
int ress = 0;
int ans = 0;
for(int i=1;i<1000;i++){
int fz = 1;
int fm = i;
flag = true;
while(flag){
if(fz<fm){
fz *= 10;
}
if(s.find(fz%fm)==s.end()){
flag = true;
}else{
flag = false;
}
if(flag){
s.insert(fz%fm);
fz = fz%fm;
}
}
res = s.size();
if(res>ress){
ress = res;
ans = i;
}
s.clear();
}
cout<<ans<<endl;
return 0;
}