Percer en 2 minutes. Il suffit d'écrire. 1 type, 2 types, c'est tout.
S = input()
if len(set(S)) == 1:
print('No')
else:
print('Yes')
Percer en 3 minutes et demie. Calculez le nombre d'opérations incluses par N. Si n fois, il y a n * A boules bleues. S'il est à mi-chemin, le nombre est A Sinon, il y a des boules bleues.
N, A, B = map(int, input().split())
result = 0
result += N // (A + B) * A
result += min(N % (A + B), A)
print(result)
Percer en 4 minutes et demie. A ≤ B ≤ 100 signifie qu'environ 1000 est la réponse, donc c'est OK pour faire un round robin! C'était plus sûr que Clever.
A, B = map(int, input().split())
for i in range(2000):
if int(i * 0.08) == A and int(i * 0.1) == B:
print(i)
exit()
print(-1)
Addendum: Il y avait un problème à résoudre par * O * (1) dans le PDF d'explication.
A, B = map(int, input().split())
x_low = (A * 100 + 7) // 8
x_high = ((A + 1) * 100 + 7) // 8 - 1
y_low = (B * 100 + 9) // 10
y_high = ((B + 1) * 100 + 9) // 10 - 1
result = max(x_low, y_low)
if result > min(x_high, y_high):
result = -1
print(result)
Percer en 17 minutes. Bien sûr, si vous utilisez la chaîne de caractères comme indiqué, TLE est droit. Vous pouvez voir utiliser deque parce que vous ajoutez de droite et de gauche. Après cela, il devient TLE si vous inversez à chaque fois. Si nécessaire, faites-le une fois à la fin.
from collections import deque
S = input()
Q = int(input())
t = deque(S)
reverse = False
for _ in range(Q):
query = input()
if query[0] == '1':
reverse = not reverse
elif query[0] == '2':
_, F, C = query.split()
if F == '1':
if reverse:
t.append(C)
else:
t.appendleft(C)
elif F == '2':
if reverse:
t.appendleft(C)
else:
t.append(C)
result = ''.join(t)
if reverse:
result = result[::-1]
print(result)
Perdu. Je n'ai trouvé aucun moyen de le supprimer de * O * (* N * 2 </ sup>). J'ai réalisé que si je continuais un chiffre à la fois, je pourrais le résoudre avec DP, mais il était trop tard.
Addendum: C'est facile lorsque P est 2 et 5, et il peut être divisé lorsque le dernier chiffre est un multiple de 2 ou un multiple de 5, vous pouvez donc le calculer en additionnant les nombres qui peuvent être étendus vers la gauche. , Par exemple S 6 </ sub> S 5 </ sub> S 4 </ sub> S 3 </ sub> S 2 </ sub> S 1 </ sub> S 0 </ sub> S 6 </ sub> S 5 </ sub> S 4 </ sub> S 3 </ strong> Si sub> est divisible par P, alors S 6 </ sub> S 5 </ sub> S 4 </ sub> S 3 </ sub> S 2 </ sub> S 1 </ sub> S 0 </ sub> ≡ S 2 </ sub> S 1 </ sub> S 0 </ sub> Puisqu'il est (mod P), il peut être obtenu en l'étendant vers la gauche tout en enregistrant le reste et en additionnant le nombre du même reste.
N, P = map(int, input().split())
S = input()
S = S[::-1]
result = 0
if P == 2 or P == 5:
for i in range(N):
if int(S[i]) % P == 0:
result += N - i
else:
t = [0] * P
m = 1
n = 0
for i in range(len(S)):
t[n] += 1
n += int(S[i]) * m
n %= P
result += t[n]
m *= 10
m %= P
print(result)
Recommended Posts