Percer en 3 minutes. Il suffit d'écrire. Cela a pris beaucoup de temps car le test de code en ligne était bloqué.
X, Y, Z = map(int, input().split())
X, Y = Y, X
X, Z = Z, X
print(X, Y, Z)
Percer en 4 minutes. Puisque le seuil est 1/4 * M du nombre total de votes, commencez par le trouver et vérifiez s'il y a M produits ou plus avec plus de votes que ce seuil. J'ai.
N, M = map(int, input().split())
A = list(map(int, input().split()))
threshold = sum(A) / (4 * M)
if len([a for a in A if a >= threshold]) >= M:
print('Yes')
else:
print('No')
Pénétrez en 6 minutes. Si N dépasse K, prenez d'abord le surplus. Après que N devienne inférieur à K, il convergera s'il est tourné correctement, car le courant alternatif a été émis après l'avoir lancé 1000 fois de manière appropriée. Le résultat est bon, je vais le réexaminer sérieusement plus tard.
N, K = map(int, input().split())
result = N
if N > K:
result = min(result, N % K)
for i in range(1000):
result = min(result, abs(result - K))
print(result)
Addendum: Soit N% K x. Puisque x <K, la valeur absolue de la différence entre x et K est K --x. À propos, la valeur absolue de la différence entre K et K --x est x. Par conséquent, x et Le plus petit K-x est la réponse.
N, K = map(int, input().split())
x = N % K
print(min(x, K - x))
Pénétrez en 49 minutes. Naturellement, TLE est requis dans la boucle tout en augmentant le nombre de 1, alors pensez à sauter. Le nombre d'exécutions est de 21 après 12. Le numéro d'exécution ne se produit que lorsque le chiffre devient 2. En cas de problème, avancez le chiffre supérieur d'une unité et rincez le chiffre inférieur à 0. Cela seul, 13 → 20 → 30 Par conséquent, si la valeur du chiffre problématique est inférieure à la valeur du chiffre précédent, nous avons décidé d'avancer la valeur du chiffre problématique de 1. Maintenant, 13 → 21 est avancé. AC. Je corrigerai le code plus tard car is_lunlun est une merde qui renvoie un nombre au lieu d'un booléen.
K = int(input())
def is_lunlun(i):
result = -1
n = [ord(c) - 48 for c in str(i)]
for j in range(len(n) - 1):
if abs(n[j] - n[j + 1]) <= 1:
continue
if n[j] < n[j + 1]:
for k in range(j + 1, len(n)):
n[k] = 0
result = int(''.join(str(k) for k in n))
result += 10 ** (len(n) - (j + 1))
else:
result = int(''.join(str(k) for k in n))
result += 10 ** (len(n) - (j + 2))
break
return result
i = 1
while True:
# print(i)
t = is_lunlun(i)
if t == -1:
K -= 1
if K == 0:
print(i)
exit()
i += 1
else:
i = t
J'ai passé car F semble visiblement plus facile à voir au classement.
ABC161F - Division or Substraction
Je n'ai pas pu percer.
Post-scriptum: J'ai ajouté environ 30 minutes et je l'ai résolu. Au total environ 1 heure? N ≤ 10 12 </ sup>, donc si vous tournez la boucle docilement, TLE est inévitable. Lorsque N devient 1, N = K a </ sup> * (b * K + 1) (a, b ≥ 0). Dans la région de K * K> N, N = a * K + 1 (hors K = N, N -1) Il y a seulement un motif de ≥ 2). Les candidats sont K de 2 ou plus et sqrt (N) ou moins, et (N -1) / K lorsque N -1 est divisible par K. Il est au plus 2 * 10 6 </ sup> donc c'est à temps.
N = int(input())
if N == 2:
# K = 2
print(1)
exit()
result = 2 # K = N - 1, N
for K in range(2, int(N ** 0.5 + 1)):
t = N
while t >= K and t % K == 0:
t //= K
if t % K == 1:
result += 1
if (N-1) % K == 0 and (N-1) // K > K:
result += 1
print(result)
Recommended Posts