Wenn die Anzahl der Zusagen ungerade ist, nur, wenn die maximale Zusage durch das Quadrat einer bestimmten Zahl dargestellt werden kann. Isqrt ist eine neue Funktion, die in Python 3.8 implementiert ist.
from math import gcd, isqrt
A, B = map(int, input().split())
X = gcd(A, B)
if isqrt(X) * isqrt(X) == X:
print('Odd')
else:
print('Even')
Da der Test schwach ist und die maximale Verpflichtung nicht durch eine Zahl von weniger als 10 7 teilbar ist, wird sie als ungerade ausgegeben, andernfalls wird die maximale Verpflichtung normalerweise in Primfaktoren und die Anzahl der Reduzierungen zerlegt. Sie können AC auch nachfragen. Warum ist es nicht im Testfall oder wenn die maximale Verpflichtung eine Primzahl von 10 9 </ sup> oder mehr ist? (Ich kann es nicht lösen und es von AC mit der Lügenlösungsmethode sagen) ..
#include <bits/stdc++.h>
#define rep(i, a) for (int i = (int)0; i < (int)a; ++i)
using namespace std;
using ll = long long;
int main() {
ll A, B;
cin >> A >> B;
ll X = gcd(A, B);
if (X == 1) {
cout << "Odd" << endl;
return 0;
}
bool flag = false;
for (ll i = 2; i < 1e7; i++) {
if (X % i == 0) {
flag = true;
break;
}
}
if (!flag) {
cout << "Odd" << endl;
return 0;
}
ll result = 1;
ll t = 0;
while (X % 2 == 0) {
t++;
X /= 2;
}
result *= t + 1;
for (ll i = 3; i < (ll)(sqrt(X) + 1); i += 2) {
if (X % i != 0) continue;
ll t = 0;
while (X % i == 0) {
t++;
X /= i;
}
result *= t + 1;
}
if (X != 1) {
result *= 2;
}
if (result % 2 == 0) {
cout << "Even" << endl;
} else {
cout << "Odd" << endl;
}
return 0;
}
Die Summe der Gewinnchancen ist gerade, sodass Sie gewinnen können, wenn Sie nur Gewinnchancen angeben.
N = int(input())
print(*range(1, N + 1, 2))
Sie können gewinnen, auch wenn Sie nur die zweite Halbzeit ausspielen.
N = int(input())
print(*range(N // 2 + 1, N + 1))
Recommended Posts