论文:https://w3.math.sinica.edu.tw/math_media/d253/25311.pdf
定理1: 如果 1 ≤ b < a, a 沒有2或 5的質因數, 並且 a 與 b 互質, 那麼 b/a 的 循環節位數恰好等於: min{e ∈ N : 10^e ≡ 1(mod a)}
51nod: 1035 最长的循环节
求 10^x≡1(modC),gcd(10,C)!=1 ,无解
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1005;
int phi[maxn];
int n;
int gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
int q_pow(int m,int n,int k)
{
int b = 1;
while(n>0)
{
if(n&1)
b = (b*m)%k;
n>>=1;
m = (m*m)%k;
}
return b;
}
void phil()
{
memset(phi,0,sizeof(phi));
phi[1]=1;
for(long long i=2;i<=n;i++)
{
if(!phi[i])
{
for(long long j=i;j<=n;j+=i)
{
if(!phi[j]) phi[j]=j;
phi[j]=phi[j]/i*(i-1);
}
}
}
}
ll solve(ll x)
{
for(int i=1;i<=phi[x];i++)
{
if(phi[x]%i==0)
{
if(q_pow(10,i,x)==1)
return i;
}
}
return -1;
}
int main()
{
cin>>n;
phil();
int ans = 0,tnt;
for(int i=1;i<=n;i++)
{
int tmp = solve(i);
if(ans<=tmp)
ans = tmp,tnt = i;
}
cout<<tnt<<endl;
return 0;
}