[PYTHON] AtCoderBeginnerContest182 Examen et résumé

AtCoder ABC182 Ceci est un résumé des problèmes de AtCoderBeginnerContest182 qui s'est tenu le 08/11/2020 (dimanche), à partir du problème A, en tenant compte de la considération. 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

Problème A twiblr

Énoncé du problème Vous disposez d'un SNS appelé twiblr. Avec twiblr, vous pouvez augmenter le nombre de followers tant que le nombre de followers ne dépasse pas 2 $ × ($ followers $) + 100 $. Votre nombre actuel d'abonnés est de $ A $ et votre nombre actuel d'abonnés est de $ B $. Combien de followers puis-je avoir?

abc182a.py


a, b = map(int, input().split())
print(2*a+100-b)

Problème B Presque GCD

Énoncé du problème Étant donné la séquence $ A (A_1, A_2, A_3,…, A_N) $. Définissez le degré GCD de l'entier positif $ k $ comme le nombre de $ A_1, A_2, A_3,…, A_N $ qui est divisible par $ k $. Trouvez l'un des nombres entiers supérieurs ou égaux à $ 2 $ qui maximise le degré GCD. S'il y en a plusieurs avec le degré GCD maximum, peu importe lequel est émis.

Degré GCD de $ p $ $ \ geq p × k $ Degré GCD ($ p $ est un nombre premier, $ k $ est un nombre naturel) Par conséquent, je l'ai implémenté avec l'intention d'examiner uniquement les nombres premiers, mais ce n'était pas nécessaire car $ N $ était petit. De plus, j'ai écrit diverses conditions pour sortir de la boucle, mais je n'avais pas besoin de cela dans le concours pour résoudre rapidement.

abc182b.py


n = int(input())
a_list = list(map(int, input().split()))
sosuu_list = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997]
max_a = max(a_list)
max_count = 0
ans = 0
for i in sosuu_list:
    if max_a < i:
        break
    count = 0
    for a in a_list:
        if a % i == 0:
            count += 1
    if count > max_count:
        max_count = count
        ans = i
    if max_count == len(a_list):
        break
print(ans)

Problème C à 3

Énoncé du problème Chaque chiffre reçoit un entier positif $ N $ tel que $ 0 $ n'apparaît pas. Soit $ k $ le nombre de chiffres dans $ N $. Je veux créer un multiple de 3 $ en effaçant 0 $ ou plus et moins de $ k $ dans les chiffres de $ N $ et en combinant les chiffres restants dans le même ordre. Déterminez si vous pouvez faire un multiple de 3 $ $, et si oui, trouvez le nombre minimum de chiffres à effacer.

Ce n'est pas un très bon code, mais c'est exactement ce que j'ai soumis. Classez soigneusement les cas.

abc182c.py


n = input()
n_list = []
for i in range(len(n)):
    k = int(n[i])
    k = k % 3
    if k == 2:
        n_list.append(-1)
    else:
        n_list.append(k)
if sum(n_list) % 3 == 0:
    print(0)
else:
    t = sum(n_list) % 3
    if t == 2:
        p_one = n_list.count(1)
        n_one = n_list.count(-1)
        if n_one > 0 and len(n_list) - 1 > 0:
            print(1)
        elif p_one > 1 and len(n_list) - 2 > 0:
            print(2)
        else:
            print(-1)
    else:
        p_one = n_list.count(1)
        n_one = n_list.count(-1)
        if p_one > 0 and len(n_list) - 1 > 0:
            print(1)
        elif n_one > 1 and len(n_list) - 2 > 0:
            print(2)
        else:
            print(-1)

Problème de D errance

Énoncé du problème Compte tenu de la séquence $ A_1, A_2, A_3,…, A_N $. Cette séquence de nombres peut contenir des éléments négatifs. Le robot situé à la coordonnée $ 0 $ sur la droite numérique effectue les opérations suivantes dans l'ordre. ・ Avancez $ A_1 $ dans le sens positif. ・ Avancez $ A_1 $ dans le sens positif et $ A_2 $ dans le sens positif. ・ Avancez $ A_1 $ dans le sens positif, avancez $ A_2 $ dans le sens positif et avancez $ A_3 $ dans le sens positif. ⋮ ・ Avancez $ A_1 $ dans le sens positif, avancez $ A_2 $ dans le sens positif, avancez $ A_3 $ dans le sens positif, ..., avancez $ A_N $ dans le sens positif. Trouvez la valeur maximale des coordonnées du robot du début à la fin de l'opération.

Je pense que cela a été bien résolu. TLE a été évité en permettant de trouver le moment où la direction la plus positive peut être atteinte à chaque étape avec un seul calcul.

abc182d.py


n = int(input())
a_list = list(map(int, input().split()))
b_list = [0] * n
b_list[0] = a_list[0]
c_list = [0] * (n + 1)
c_list[1] = b_list[0]
for i in range(1, n):
    b_list[i] = b_list[i - 1] + a_list[i]
    c_list[i + 1] = c_list[i] + b_list[i]
max_x = 0
max_b = b_list[0]
x = 0
for i in range(n):
    x = c_list[i]
    if max_b < b_list[i]:
        max_b = b_list[i]
    x += max_b
    if x > max_x:
        max_x = x
print(max_x)

J'ai pu résoudre le problème D à un bon rythme cette fois aussi, mais j'étais coincé avec le problème E. Il est temps de résoudre les problèmes du passé pour pouvoir terminer 5.

Merci d'avoir lu jusqu'à la fin.

Recommended Posts

AtCoderBeginnerContest181 Examen et résumé
AtCoderBeginnerContest182 Examen et résumé
AtCoderBeginnerContest183 Review & Résumé
AtCoderBeginnerContest179 Review & Résumé
AtCoderBeginnerContest178 Review & Summary (second semestre)
AtCoderBeginnerContest161 Review & Summary (second semestre)
AtCoderBeginnerContest164 Review & Summary (second semestre)
AtCoderBeginnerContest164 Review & Summary (premier semestre)
AtCoderBeginnerContest169 Review & Summary (premier semestre)
AtCoderBeginnerContest176 Review & Summary (second semestre)
AtCoderBeginnerContest174 Review & Summary (premier semestre)
AtCoderBeginnerContest173 Review & Summary (First Half)
AtCoderBeginnerContest168 Review & Summary (second semestre)
AtCoderBeginnerContest169 Review & Summary (second semestre)
AtCoderBeginnerContest165 Review & Summary (premier semestre)
AtCoderBeginnerContest170 Review & Summary (premier semestre)
AtCoderBeginnerContest167 Review & Summary (premier semestre)
AtCoderBeginnerContest166 Review & Summary (second semestre)
AtCoderBeginnerContest177 Review & Résumé (premier semestre)
AtCoderBeginnerContest171 Review & Summary (second semestre)
AtCoderBeginnerContest168 Review & Summary (premier semestre)
AtCoderBeginnerContest174 Review & Summary (second semestre)
AtCoderBeginnerContest178 Review & Summary (premier semestre)
AtCoderBeginnerContest171 Review & Summary (premier semestre)
AtCoderBeginnerContest166 Review & Summary (premier semestre)
AtCoderBeginnerContest161 Review & Summary (premier semestre)
AtCoderBeginnerContest173 Review & Summary (second semestre)
AtCoderBeginnerContest172 Review & Summary (premier semestre)
AtCoderBeginnerContest177 Review & Summary (second semestre)
AtCoderBeginnerContest176 Review & Summary (premier semestre)
Résumé de Django
Résumé de python-pptx
Résumé Linux
Résumé Python
Résumé de Django
résumé pyenv
Résumé de la chaîne de caractères 1
résumé pytest
Résumé matplotlib
Examen des fonctions