C'est le premier achèvement complet, et le classement est également le top 9%. Pourquoi n'est-il pas noté! (Bang bang desk).
Pénétrez dans 2 minutes. Si le soleil a déjà frappé, la position actuelle répond. Si la position actuelle est inférieure à L, L répond, et si la position actuelle dépasse R, R répond.
S, L, R = map(int, input().split())
if L <= S <= R:
print(S)
elif S < L:
print(L)
elif S > R:
print(R)
Passez en 6 minutes. Triez R et B, affichez R par ordre croissant, puis affichez B par ordre croissant. Bien sûr, il suffit de trier par ordre croissant.
N = int(input())
R = []
B = []
for _ in range(N):
X, C = input().split()
if C == 'R':
R.append(int(X))
elif C == 'B':
B.append(int(X))
R.sort()
B.sort()
if R:
print('\n'.join(str(r) for r in R))
if B:
print('\n'.join(str(b) for b in B))
Percer en 12 minutes. N vaut 9 au plus, il ne vous reste plus qu'à faire un tour. Itertools.permutations Je t'aime.
from itertools import permutations
a1, a2, a3 = map(int, input().split())
a = [a1, a2, a3]
N = a1 + a2 + a3
result = 0
for p in permutations(range(1, N + 1)):
X = [p[:a1], p[a1:a1 + a2], p[a1 + a2:]]
flag = True
for i in range(3):
for j in range(1, a[i]):
if X[i][j] <= X[i][j - 1]:
flag = False
for i in range(1, 3):
for j in range(a[i]):
if X[i][j] <= X[i - 1][j]:
flag = False
if flag:
result += 1
print(result)
Percer dans 23 minutes et demie. Si vous faites Naive, prenez TLE. X avec * O * (10 10 </ sup>) pour prendre tous les A et GCD, prenez tous les GCD de A et GCD de X Identique à. Si X ne devient pas 1, il devient * O * (10 5 </ sup>) et il est effacé. C'est le nombre d'opérations lorsque X devient 1, mais le GCD de A est pris dans l'ordre. Seules les pièces modifiées sont candidates, alors ne vérifiez que les pièces modifiées. On ne sait pas dans quelle mesure la commande sera réduite par cela, mais intuitivement, elle devrait être considérablement réduite, donc si vous la soumettez, ce sera en sécurité.
from math import gcd
N, Q = map(int, input().split())
A = list(map(int, input().split()))
S = list(map(int, input().split()))
gcd_a = A[0]
a = [(1, A[0])]
for i in range(1, N):
t = gcd(gcd_a, A[i])
if t != gcd_a:
gcd_a = t
a.append((i + 1, gcd_a))
for i in range(Q):
X = S[i]
t = gcd(gcd_a, X)
if t != 1:
print(t)
else:
for j, g in a:
if gcd(X, g) != 1:
continue
print(j)
break
Post-scriptum: Il semble que tout le monde le résout, alors j'ai essayé de le résoudre même avec Nibutan w
from math import gcd
N, Q = map(int, input().split())
A = list(map(int, input().split()))
S = list(map(int, input().split()))
for i in range(N - 1):
A[i + 1] = gcd(A[i + 1], A[i])
for i in range(Q):
X = S[i]
t = gcd(A[-1], X)
if t != 1:
print(t)
else:
ng = -1
ok = N - 1
while ok - ng > 1:
m = (ok + ng) // 2
if gcd(X, A[m]) == 1:
ok = m
else:
ng = m
print(ok + 1)
Recommended Posts