Brechen Sie in 2 Minuten durch. Schreiben Sie einfach. 1 Typ, 2 Typen, das war's.
S = input()
if len(set(S)) == 1:
print('No')
else:
print('Yes')
Brechen Sie in dreieinhalb Minuten durch. Berechnen Sie, wie viele Operationen N enthält. Wenn n-mal, gibt es n * A blaue Kugeln. Auf halber Strecke, wenn es innerhalb von A liegt, ist die Zahl Ansonsten gibt es A blaue Kugeln.
N, A, B = map(int, input().split())
result = 0
result += N // (A + B) * A
result += min(N % (A + B), A)
print(result)
Brechen Sie in viereinhalb Minuten durch. A ≤ B ≤ 100 bedeutet, dass 1000 höchstens die Antwort ist. Es ist also in Ordnung, ein Round-Robin zu machen! Sie könnten klüger sein, aber ich habe WA gegessen und es ungefähr zweimal diszipliniert. Es war sicherer als 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)
Nachtrag: In der PDF-Erklärung gab es ein Problem, das von * O * (1) gelöst werden musste.
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)
Durchbruch in 17 Minuten. Wenn Sie die Zeichenfolge wie angegeben bedienen, ist TLE natürlich gerade. Sie können die Verwendung von deque sehen, weil Sie von rechts und links hinzufügen. Danach wird es TLE, wenn Sie jedes Mal invertieren. Wenn nötig, machen Sie es am Ende einfach einmal.
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)
Verloren. Ich konnte mir keine Möglichkeit vorstellen, es aus * O * (* N * 2 </ sup>) zu entfernen. Mir wurde klar, dass ich es mit DP lösen könnte, wenn ich eine Ziffer nach der anderen fortfahre, aber es war zu spät.
Nachtrag: Es ist einfach, wenn P 2 und 5 ist, und es kann geteilt werden, wenn die letzte Ziffer ein Vielfaches von 2 oder ein Vielfaches von 5 ist, sodass der Rest berechnet werden kann, indem die Zahlen akkumuliert werden, die nach links erweitert werden können. Für andere Ps Zum Beispiel S 6 S 5 S 4 4 S 3 2 S 2 > 1 </ sub> S 0 </ sub> S 6 </ sub> S 5 </ sub> S 4 </ sub> S 3 </ strong> Wenn sub> durch P teilbar ist, dann 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> Da es sich um (mod P) handelt, kann es erhalten werden, indem es nach links erweitert wird, während der Rest aufgezeichnet und die Nummer desselben Restes addiert wird.
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