待更新。。。。
题目:AcWing 202
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const ll N = 1e3 + 100;
const ll INF = 0x3f3f3f3f3f3f3f3f;
ll mul(ll a, ll b, ll p)
{
ll res = 0, t = a % p;
while (b)
{
if (b & 1) res = (res + t) % p;
t = (t + t) % p;
b >>= 1;
}
return res;
}
ll qmi(ll m, ll k, ll p)
{
ll res = 1, t = m;
while (k)
{
if (k & 1) res = mul(res, t, p);
t = mul(t, t, p);
k >>= 1;
}
return res;
}
ll Phi(ll n)
{
ll ans = n;
for (ll i = 2; i <= sqrt(n); i++)
{
if (n % i == 0)
{
ans = ans / i * (i - 1);
while (n % i == 0) n = n / i;
}
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
int main()
{
ll n;
ll Case = 1;
while (cin >> n, n)
{
cout << "Case " << Case++ << ": ";
ll d = __gcd(n, 8ll);
ll x = 9 * n / d;
ll phi = Phi(x);
ll res = INF;
for (ll i = 1; i <= sqrt(phi); i++)
{
if (phi % i != 0) continue;
if ((ll)qmi(10ll, i, x) == 1)
{
res = min(i, res);
}
if ((ll)qmi(10ll, phi / i, x) == 1)
{
res = min(phi / i, res);
}
}
if (res == INF) res = 0;
cout << res << endl;
}
return 0;
}