Es ist leicht zu erkennen, dass die Taste A N </ sub> in umgekehrter Reihenfolge zur Taste A 1 </ sub> gedrückt wird. A i </ sub> ist B i < Ein Vielfaches von / sub> bedeutet A i </ sub> mod B i </ sub> = 0, also A i </ sub> mod B Wenn i </ sub> nicht 0 ist, drücken Sie B i </ sub> - A i </ sub> mod B i </ sub> mal. Übrigens bis dahin Beachten Sie, dass A i </ sub> um die Häufigkeit erhöht, mit der Sie darauf drücken. Auf der Grundlage des oben Gesagten habe ich den folgenden Code geschrieben, um nach einer Antwort zu fragen.
N = int(input())
A = [None] * N
B = [None] * N
for i in range(N):
A[i], B[i] = map(int, input().split())
result = 0
for i in range(N - 1, -1, -1):
t = (A[i] + result) % B[i]
if t != 0:
result += B[i] - t
print(result)
Der Bus fährt in dem Moment ab, in dem das Zeitlimit der ersten wartenden Person kommt oder die wartende Person zu C Personen wird. Geben Sie also das Zeitlimit der ersten Person und die aktuelle Anzahl der wartenden Personen in die Variablen ein. Drehen Sie einfach die Schleife. Beachten Sie, dass die Zeit T i </ sub> nicht monoton ansteigt, obwohl es sich um den i-ten Passagier handelt.
N, C, K = map(int, input().split())
T = [int(input()) for _ in range(N)]
T.sort()
c = 0
l = float('inf')
result = 0
for i in range(N):
t = T[i]
if t > l:
result += 1
l = float('inf')
c = 0
if c == 0:
l = t + K
c += 1
if c == C:
result += 1
l = float('inf')
c = 0
if c != 0:
result += 1
print(result)
Es ist für Menschen einfach, es von Hand zu tun, aber ich stöhnte, dass es ärgerlich war, es umzusetzen, aber ich habe nur übersehen, dass ich nur nach rechts gehen konnte (lacht). Vorrang hat derjenige mit dem Ziel auf der rechten Seite Wenn Sie es nicht bewegen können, bewegen Sie das andere, und wenn Sie beide nicht bewegen können, zeigen Sie Nein an, das war's.
N, A, B, C, D = map(int, input().split())
S = input()
def move_snuke():
global A, B
if B == D:
return False
if S[B + 1] == '.' and A != B + 1:
B += 1
return True
if S[B + 2] == '.' and A != B + 2:
B += 2
return True
return False
def move_fnuke():
global A, B
if A == C:
return False
if S[A + 1] == '.' and B != A + 1:
A += 1
return True
if S[A + 2] == '.' and B != A + 2:
A += 2
return True
return False
S = '#' + S
while True:
if C < D:
if not move_snuke():
if not move_fnuke():
print('No')
break
else:
if not move_fnuke():
if not move_snuke():
print('No')
break
if A == C and B == D:
print('Yes')
break
Wenn die erste a und die zweite b ist, ist die dritte a x oder b, die vierte ist a, die fünfte ist b und es erscheinen nur drei Arten von Zahlen. Also a i < Wenn es 4 oder mehr Typen von / sub> -Nummern gibt, können Sie an diesem Punkt Nein setzen. Wenn es 3 Typen gibt, gibt es nur 9 Typen in den ersten 2 und selbst wenn Sie alle Kombinationen simulieren, ist N ≤ 10 5 </ sup > Von bis maximal O (9 × 10 5 </ sup>) ist AC möglich.
from itertools import product
N = int(input())
a = list(map(int, input().split()))
c = {}
for e in a:
c.setdefault(e, 0)
c[e] += 1
if len(set(c)) > 3:
print('No')
exit()
t = {}
for x, y in product(set(c), repeat=2):
i = x
j = y
t[i] = 1
if t[i] > c[i]:
continue
t.setdefault(j, 0)
t[j] += 1
if t[j] > c[j]:
continue
for _ in range(N - 2):
k = i ^ j
t.setdefault(k, 0)
t[k] += 1
c.setdefault(k, 0)
if t[k] > c[k]:
j = -1
break
i, j = j, k
if j ^ x == y:
print('Yes')
exit()
print('No')
Da L durch N und M teilbar ist, ist es ein Vielfaches des minimalen gemeinsamen Vielfachen von N und M. Wenn L / N * i == L / M * j, muss es S [i] == T [j] sein, Selbst wenn L zu L * a wird, ändert sich das zu vergleichende Paar von i und j nicht, da es auf beiden Seiten nur mit a multipliziert wird. Da die Antwort die kürzeste ist, ist L das minimale gemeinsame Vielfache von N und M. Werden.
from fractions import gcd
def lcm(x, y):
return x // gcd(x, y) * y
N, M = map(int, input().split())
S = input()
T = input()
for i in range(N):
if M * i % N == 0 and S[i] != T[M * i // N]:
print(-1)
exit()
print(lcm(N, M))
Das nächste bunte Wort ist
Wird sein.
Immerhin handelt es sich um eine Zeichenfolge mit einer maximalen Länge von 26, sodass das Hinzufügen oder Hinzufügen kein Problem darstellt, sodass die Implementierung nicht so schwierig ist.
def next_diverse_word(s):
alphabets = set(chr(ord('a') + i) for i in range(26))
if s == 'zyxwvutsrqponmlkjihgfedcba':
return -1
r = alphabets - set(s)
if len(r) != 0:
return s + sorted(r)[0]
s = list(s)
r = [s[-1]]
s = s[:-1]
while True:
k = s[-1]
r.append(s[-1])
s = s[:-1]
t = [c for c in r if c > k]
if len(t) != 0:
s.append(sorted(t)[0])
return ''.join(s)
S = input()
print(next_diverse_word(S))
Recommended Posts