RT。题面看这里:Link。
然后我校有一道一样题,不过不用输出 Case x:
,我的代码如下:
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define PII pair<int, int>
#define M(x, y) make_pair(x, y)
LL L;
LL phi(LL n) {
LL ans = n;
for (int i = 2; i <= n / i; i++) {
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) n /= i;
}
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
int gcd(int x, int y) {
return y ? gcd(y, x % y) : x;
}
int q(int a, int b, LL k) {
int ans = 1 % k;
while (b) {
if (b & 1) ans = ans * a % k;
a = a * a % k;
b >>= 1;
}
return ans;
}
int main() {
#ifndef ONLINE_JUDGE
freopen("1.in", "r", stdin);
freopen("1.out", "w", stdout);
#endif
while (scanf("%lld", &L), L) {
L *= 9; L /= gcd(8, L);
if (gcd(L, 10) > 1) {
puts("0");
continue;
}
int k = phi(L), ans = 1e9;
for (int i = 1; i * i <= k; i++)
if (k % i == 0) {
if (q(10, i, L) == 1) ans = min(ans, i);
if (i != k / i && q(10, k / i, L) == 1) ans = min(ans, k / i);
}
printf("%d\n", ans);
}
return 0;
}
然后 0 分 TLE 了……求助大佬!