ll gcd(ll a,ll b)
{
return b==0?a : gcd(b,a%b);
}
inline ll eular(ll n)
{
ll ans=n;
for(int i=2; 1ll*i*i<= n; i++)
{
if(n%i==0)
{
ans-=ans/i;
while(n%i==0) n/=i;
}
}
if(n>1) ans-=ans/n;
return ans;
}
ll multi(ll a,ll b,ll mod)
{
ll ans = 0;a%=mod;
while(b)
{
if(b & 1) ans = (ans + a) % mod;
a = (a << 1) % mod;
b = b >> 1;
}
return ans;
}
ll Quick(ll a,ll b,ll mod)
{
ll ans = 1; a %= mod;
while(b)
{
if(b & 1) ans = multi(ans,a,mod);
b >>= 1;
a = multi(a,a,mod);
}
return ans;
}
ll solve(ll L)
{
ll p=L/gcd(9*L,8ll)*9;
if(gcd(10,p)!=1) return 0;
ll ans=eular(p),mod=p;
ll tmp=ans;
for(ll i=1;i*i<=tmp;++i)
{
if(tmp%i==0)
{
if(Quick(10,i,mod)==1ll) ans=min(ans,i);
if(i*i!=tmp&&Quick(10,tmp/i,mod)==1ll) ans=min(ans,tmp/i);
}
}
return ans;
}
signed main()
{
ll L;int num=0;
while(cin>>L)
{
if(L==0) break;
cout<<"Case "<<++num<<": "<<solve(L)<<endl;
}
return 0;
}
AcWing 202. 最幸运的数字 (欧拉定理,同余,指数循环节)
最新推荐文章于 2021-07-18 16:27:38 发布