Nur A und B wurden gelöst. Die Leistung ist in letzter Zeit zurückgegangen.
https://atcoder.jp/contests/abc179
A. Plural Form
S = input()
if S[-1] == 's':
answer = S + 'es'
else:
answer = S + 's'
print(answer)
Schreiben Sie gemäß der Problemstellung.
B. Go to Jail
N = int(input())
D = [tuple(map(int, input().split())) for _ in range(N)]
answer = 'No'
count = 0
for i in range(N):
if D[i][0] != D[i][1]:
count = 0
else:
count += 1
if count == 3:
answer = 'Yes'
break
print(answer)
Es bestimmt die Ausrichtung und gibt `Ja``` zurück, wenn
`count```` `` 3``` erreicht.
C. A x B + C
N = int(input())
answer = 0
for a in range(1, N):
answer += (N-1) // a
print(answer)
In Anbetracht der Einschränkungen scheint es, dass die for-Schleife nur einmal gedreht werden kann.
a * b + c = n
Verwandelna * b = n - c
Danna * b
Es kann das Problem des Zählens der Anzahl von Kombinationen von genannt werden.
D. Leaping Tak
MOD = 998244353
N, K = map(int, input().split()) #N ist die Anzahl der Quadrate, K ist die Anzahl der Abschnitte(K ist 10 oder weniger)
kukan = [tuple(map(int, input().split())) for _ in range(K)]
dp = [0] * (N+1)
dp[1] = 1
sumdp = [0] * (N+1)
sumdp[1] = 1
for i in range(2, N+1):
for l, r in kukan:
li = max(i - l, 0)
ri = max(i - r - 1, 0)
dp[i] += sumdp[li] - sumdp[ri]
dp[i] %= MOD
sumdp[i] = sumdp[i-1] + dp[i]
print(dp[N])
Normalerweise ist die Einnahme von `dp``` nicht rechtzeitig, verwenden Sie also`
dp und die kumulative Summe `` `sumdp
.
E. Sequence Sum
N, X, M = map(int, input().split())
count_memo = [-1] * 10**6 #Anzahl der Noten
num_memo = [0] #Eine Notiz. 1 Index.
a = X
count = 1
count_memo[a] = count
num_memo.append(a)
for i in range(1, N):
a = a**2 % M
if count_memo[a] == -1:
count += 1
count_memo[a] = count
num_memo.append(a)
else:
break
if count == N: #Total, wenn vor dem Eintritt in den Zyklus fertig
answer = sum(num_memo)
else:
#Anzahl und Summe bis zum Eintritt in den Zyklus
count_before_cycle = count_memo[a] - 1
sum_before_cycle = sum(num_memo[:count_before_cycle+1])
#Anzahl und Summe von 1 Zyklus
count_cycle = count - count_before_cycle
sum_cycle = sum(num_memo[count_before_cycle+1:])
#Anzahl und Summe der verbleibenden Zyklen
cycle_count = (N - count) // count_cycle
sum_after_cycle = sum_cycle * cycle_count
#Zu viele und total
remain_count = (N - count) % count_cycle
sum_remain = sum(num_memo[count_before_cycle+1:count_before_cycle+1 + remain_count])
answer = sum_before_cycle + sum_cycle + sum_after_cycle + sum_remain
print(answer)
a
Tritt irgendwo in den Zyklus ein.
Deshalb,
Recommended Posts