当前位置: 代码迷 >> 综合 >> 欧拉计划26--Reciprocal cycles
  详细解决方案

欧拉计划26--Reciprocal cycles

热度:35   发布时间:2023-11-25 20:56:19.0

倒数的循环节

单位分数指分子为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;
}