AtCoder ABC179 Ceci est un résumé des problèmes de AtCoder Beginner Contest 179, qui s'est tenu le samedi 19/09/2020, dans l'ordre du problème A, en tenant compte de la considération. (Je n'ai pas eu le temps, donc j'ajouterai plus de pensées quand j'aurai le temps) Le problème est cité, mais veuillez consulter la page du concours pour plus de détails. Cliquez ici pour la page du concours Commentaire officiel PDF
Énoncé du problème Dans le royaume d'AtCoder, la langue Takahashi, qui utilise des lettres minuscules, est utilisée. En takahashi, les formes plurielles de nomenclature sont épelées selon les règles suivantes. ・ Si la fin de la forme singulière est autre que "s", ajoutez "s" à la fin de la forme singulière ・ Si la forme singulière se termine par "s", ajoutez "es" à la fin de la forme singulière Étant donné la forme singulière $ S $ de la nomenclature Takahashi, afficher la forme plurielle.
abc179a.py
n = input()
if n[-1] == "s":
print(n + "es")
else:
print(n + "s")
Énoncé du problème M. Takahashi a exécuté l'action de "lancer des dés de 2 $" fois $ N $. Le $ i $ roll est $ D_ {i, 1}, D_ {i, 2} $. Déterminez si vous avez eu des yeux Zoro plus de 3 $ d'affilée. Plus précisément, $ D_ {i, 1} = D_ {i, 2} $ et $ D_ {i + 1,1} = D_ {i + 1,2} $ et $ D_ {i + 2,1} Déterminez s'il y a au moins un $ i $ qui satisfait = D_ {i + 2,2} $.
abc179b.py
n = int(input())
check_list = []
for i in range(n):
d1, d2 = map(int, input().split())
if d1 == d2:
check_list.append(1)
else:
check_list.append(0)
flag = 0
for i in range(n - 2):
if sum(check_list[i:(i+3)]) == 3:
flag = 1
break
if flag:
print("Yes")
else:
print("No")
Énoncé du problème Étant donné un entier positif $ N $. Combien de paires d'entiers positifs $ (A, B, C) $ satisfont $ A × B + C = N $?
abc179c.py
n = int(input())
count = 0
for a in range(1, n):
count += (n - 0.5) // a
print(int(count))
print(count)
Énoncé du problème Il y a une ligne de carrés $ N $, qui sont numérotés $ 1,2,…, N $ dans l'ordre à partir de la gauche. M. Takahashi, qui habite ce carré, est actuellement dans le carré $ 1 $ et tente de se rendre au carré $ N $ en répétant le mouvement par la méthode décrite plus loin. Étant donné un entier $ K $ inférieur ou égal à $ 10 $ et $ K $ intervalle $ [L_1, R_1], [L_2, R_2],…, [L_K, R_K] $ qui n'ont pas de parties communes, ces intervalles Soit l'ensemble somme de $ S $. Cependant, l'intervalle $ [l, r] $ représente un ensemble d'entiers supérieurs ou égaux à $ l $ et inférieurs ou égaux à $ r $. ・ Lorsque vous êtes dans la masse $ i $, sélectionnez $ 1 $ à partir de $ S $ (appelons-le $ d $) et passez à la masse $ i + d $. Cependant, ne vous déplacez pas en dehors du carré. Pour Takahashi, trouvez le reste du nombre de façons d'atteindre la masse $ N $ divisé par 998244353 $.
abc179d.py
n, k = map(int, input().split())
s_list = []
a_list = [0] * (n + 1)
b_list = [0] * (n + 1)
a_list[1] = 1
b_list[1] = 1
for i in range(k):
l, r = map(int, input().split())
s_list.append([l, r + 1])
for i in range(2, n + 1):
for l, r in s_list:
t2 = max(0, i - l)
t1 = max(0, i - r)
a_list[i] += b_list[t2] - b_list[t1]
b_list[i] = (b_list[i - 1] + a_list[i]) % 998244353
print(a_list[n] % 998244353)
Énoncé du problème Le reste de $ x $ divisé par $ m $ est exprimé en $ f (x, m) $. Soit $ A $ une suite de nombres définie par la valeur initiale $ A_1 = X $ et l'expression graduelle $ A_ {n + 1} = f (A_n ^ 2, M) $. Trouvez $ \ sum_ {i = 1} ^ {N} A_i $.
abc179e.py
n, x, m = map(int, input().split())
x_set = set()
x_list = []
for i in range(n):
if x not in x_set:
x_set.add(x)
x_list.append(x)
else:
break
x = x**2 % m
total = 0
start = n
for i in range(n):
if x_list[i] == x:
start = i
break
else:
total += x_list[i]
if start != n:
m = len(x_list) - start
k = (n - start) // m
total += k * sum(x_list[start:])
for i in range(0, n - k * m - start):
total += x_list[start + i]
print(total)
Recommended Posts