倒数的循环节
单位分数指分子为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;
}