Concours de programmation Atcoder Acing Python

Résumé

C'était difficile. C'était A, B, C 3 questions AC. Je ne connais pas bien le nombre binaire, donc D saute le moment où je vois le problème, et j'ai l'impression de pouvoir résoudre le problème E, mais je ne comprends pas même si je regarde l'exemple de réponse.

problème

(https://atcoder.jp/contests/aising2020/tasks)

A. Number of Multiples image.png

Répondre

L, R, d = map(int, input().split())

count = 0
for i in range(L, R+1):
    if i % d == 0:
        count += 1

print(count)

Je l'ai écrit docilement. D'autres semblent écrire d'une manière plus cool.

B. An Odd Problem image.png

Répondre

N = int(input())
a = list(map(int, input().split()))

count = 0
for i in range(0, N, 2):
    if i % 2 == 0 and a[i] % 2 != 0:
        count += 1
print(count)

J'ai aussi écrit ceci honnêtement. Le problème est étrange, mais les indices de la liste sont pairs.

C. XYZ Triplets image.png

Répondre
N = int(input())

keys = [i for i in range(1, N+1)]
values = [0] * N
count_dict = dict(zip(keys, values))

for x in range(1, N//6+7):
    for y in range(x, N//6+7):
        for z in range(y, N//6+7):
            n = x**2 + y**2 + z**2 + x*y + y*z + z*x
            if n > N:
                break
            if x == y and y == z:
                count_dict[n] += 1
            elif x != y and x != z and y != z:
                count_dict[n] += 6
            else:
                count_dict[n] += 3

for v in count_dict.values():
    print(v)

Pour être honnête, tournez la boucle for de range (1, N + 1) '' pour chacun des x, y, z et `` x ** 2 + y ** 2 + z ** 2 + x Il semble que * y + y * z + z * x = n``` devrait être jugé. Cependant, comme la contrainte est 10 ** 4, elle ne sera pas à temps pour une triple boucle normale, pensez donc à réduire la quantité de calcul.

La première chose à laquelle j'ai pensé était que si (x, y, z) = (1,1,1) , n est 6, donc la valeur maximale qui peut être tournée dans une boucle for est . N // 6 semble bon. Cependant, considérant que l'indice doit être + 1```, j'ai choisi N // 6 + 7 ''avec une marge. (En production, j'ai utilisé `` `` N // 6 + 7```, mais si j'utilise la contrainte `` `` 10 ** 4``` à l'envers, `` `` (x, y, z) Vous pouvez voir que `` ne peut être utilisé que jusqu'à environ 100. Je n'ai pas remarqué cela pendant la production ...)

Donc, il semble que cela seul ne sera probablement pas à temps, alors je vais envisager de réduire un peu plus la quantité de calcul.

Si vous donnez quelques exemples, vous remarquerez ce qui suit. --(1,2,3)et (1,3,2) `` et (2,1,3) et`` (2,3) , 1) `` et (3,1,2) et`` (3,2,1) , où x, y, z sont tous différents, n est la même valeur Il y a 6 combinaisons

Par conséquent, la plage de la boucle for de x, y, z est range (1, N // 6 + 7) , range (x, N // 6 + 7) '', respectivement. Comme range (y, N // 6 + 7) '' ``, il semble que count devrait être +6, +3, +1 dans les trois cas ci-dessus.

Après cela, si n dépasse N, vous pouvez réussir à le faire en ajoutant break```.

Recommended Posts

Concours de programmation Atcoder Acing Python
Concours de programmation Acing 2020
Rapport de participation au concours de programmation AtCoder Acing 2020
Concours Atcoder Débutant 152 Kiroku (python)
atCoder 173 Python
Rapport de participation au concours de programmation AtCoder HHKB 2020
Rapport de participation au concours de programmation AtCoder Keyence 2020
AtCoder Beginner Contest 174 C Problème (Python)
Rapport de participation au concours de programmation AtCoder Panasonic 2020
atcoder Review of Panasonic Programming Contest 2020, jusqu'à la question E (Python)
Note de programmation Python
Concours AtCoder Débutant 179
AtCoder ABC 174 Python
Rapport de participation au concours d'entraînement de la bibliothèque AtCoder (Python)
[Python] [Explication] Concours DP typique d'AtCoder: un concours
Concours AtCoder Débutant 172
Concours AtCoder Débutant 180
Concours de programmation HHKB 2020
Programmation avec Python
Concours AtCoder Débutant 173
Concours pour débutants AtCoder: Réponses aux problèmes D Python
Concours Atcoder Débutant 153
AtCoder ABC 175 Python
AtCoder Beginner Contest 167 B Problème Explication de "Programmation linéaire facile" (Python3, C ++, Java)
AtCoder # 36 quotidien avec Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Daily AtCoder # 53 en Python
Concours AtCoder Débutant 181 Remarque
AtCoder Grand Contest 041 Critique
Daily AtCoder # 33 en Python
AtCoder # 7 tous les jours avec Python
Revue du concours régulier AtCoder 105
AtCoder # 24 tous les jours avec Python
Daily AtCoder # 37 en Python
Résolvez AtCoder 167 avec python
AtCoder # 8 tous les jours avec Python
Daily AtCoder # 42 en Python
Examen du concours de programmation Keyence 2020
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Concours AtCoder Débutant 180 Remarque
[Python] Concours de programmation Sumitomo Mitsui Trust Bank 2019 C (Comment utiliser DP) [AtCoder]
Critique du concours AtCoder pour débutant 166
AtCoder # 21 quotidien avec Python
AtCoder Débutant Contest 167 Évaluation
Daily AtCoder # 17 avec Python
Daily AtCoder # 38 en Python
3. 3. Programmation IA avec Python
Daily AtCoder # 54 en Python
Concours régulier AtCoder 106 Remarque
Daily AtCoder # 11 en Python
Daily AtCoder # 15 en Python
Daily AtCoder # 47 avec Python
Daily AtCoder # 13 en Python
Concours AtCoder Débutant 182 Remarque