[PYTHON] AtCoderBeginnerContest181 Examen et résumé

AtCoder ABC181 Ceci est un résumé des problèmes de AtCoderBeginnerContest181 qui s'est tenu le 2020-11-01 (Dimanche) dans l'ordre 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 PDF

Problème A Rotation lourde

Énoncé du problème Takahashi porte désormais des vêtements blancs. Takahashi porte des vêtements noirs le lendemain après avoir porté des vêtements blancs et des vêtements blancs le lendemain après avoir porté des vêtements noirs. Quelle couleur porterez-vous en $ N $ jours?

abc181a.py


n = int(input())
if n % 2 == 0:
    print("White")
else:
    print("Black")

Problème B Somme trapézoïdale

Énoncé du problème Il y a un tableau noir vierge. Takahashi opère $ N $ fois et écrit un entier sur le tableau noir. Dans l'opération _ $ i $, écrivez $ 1 $ chacun de tous les entiers de $ A_i $ à $ B_i $, pour un total de $ B_i − A_i + 1 $ entiers. Trouvez la somme des entiers écrits sur le tableau noir après avoir terminé les opérations $ N $.

Il était très utile d'avoir $ B_i − A_i + 1 $ dans l'énoncé du problème. J'oublie souvent d'ajouter +1 ici et je fais des erreurs (sueur)

abc181b.py


n = int(input())
total = 0
for i in range(n):
    a, b = map(int, input().split())
    total += (b - a + 1) * (a + b) // 2
print(total)

Problème C Somme trapézoïdale

Énoncé du problème Il y a $ N $ points sur un plan de dimension $ 2 $ infiniment large. Le $ i $ ème point est à $ (x_i, y_i) $. Y a-t-il des points de 3 $ différents sur des points $ N $ qui sont sur la même ligne droite?

Être sur une ligne droite signifie que pour trois points $ P_1, P_2, P_3 $ k\overrightarrow{P_1P_2}=\overrightarrow{P_1P_3} Puisqu'il est nécessaire de tenir, nous avons pu obtenir une expression conditionnelle à tenir en éliminant $ k $ de l'équivalence des composantes x et y.

abc181c.py


n = int(input())
x_list = []
y_list = []
for i in range(n):
    x, y = map(int, input().split())
    x_list.append(x)
    y_list.append(y)
flag = 0
for i in range(n - 2):
    for j in range(i + 1, n - 1):
        for k in range(j + 1, n):
            xi = x_list[i]
            xj = x_list[j]
            xk = x_list[k]
            yi = y_list[i]
            yj = y_list[j]
            yk = y_list[k]
            if (xj - xi) * (yk - yi) == (xk - xi) * (yj - yi):
                flag = 1
if flag == 1:
    print("Yes")
else:
    print("No")

D problème Hachi

Énoncé du problème Étant donné une chaîne de nombres $ S $ constituée uniquement de nombres de 1 à 9. Bee Takahashi aime les multiples de 8 $. Takahashi essaie de réorganiser la chaîne numérique $ S $ pour faire un multiple de 8 $ $. Déterminez si vous pouvez faire un multiple de 8 $ $.

Pour qu'une certaine chaîne numérique soit un multiple de 8 $ $, les trois derniers chiffres doivent être un multiple de 8 $ $. Par conséquent, il peut être résolu en vérifiant s'il est possible de créer trois chiffres, qui est un multiple de 8 $ $, pour une chaîne numérique de trois chiffres ou plus. Premièrement, nous avons enregistré une combinaison de nombres multiples de 8 $, sans compter 0 $, et confirmé que le nombre requis pour cette combinaison était suffisant, et rendu un jugement. Je pense que je peux écrire un code plus simple, mais je posterai celui soumis tel quel.

abc181d.py


s = input()
flag = 0
if len(s) == 1:
    if int(s) % 8 == 0:
        flag = 1
elif len(s) < 3:
    if int(s) % 8 == 0:
        flag = 1
    if int(s[1] + s[0]) % 8 == 0:
        flag = 1
else:
    check_list = []
    for i in range(14, 125):
        mozi = str(i * 8)
        if len(mozi) == 3 and "0" not in mozi:
            count_list = [0] * 9
            count_list[int(mozi[0]) - 1] += 1
            count_list[int(mozi[1]) - 1] += 1
            count_list[int(mozi[2]) - 1] += 1
            check_list.append(count_list)
    s_list = [0] * 9
    for suuzi in s:
        s_list[int(suuzi) - 1] += 1
    for count_list in check_list:
        total = 0
        for i in range(9):
            if count_list[i] > 0:
                if count_list[i] <= s_list[i]:
                    total += count_list[i]
        if total == 3:
            flag = 1
            break
if flag == 1:
    print("Yes")
else:
    print("No")

Cette fois, j'ai pu résoudre le problème D à un bon rythme, mais je n'ai pas pu résoudre le problème E car il était bloqué par "WA". Comme la politique était en place, je voudrais m'assurer qu'elle pourra être résolue la prochaine fois.

Merci d'avoir lu jusqu'au bout.

Recommended Posts

AtCoderBeginnerContest180 Examen et résumé
AtCoderBeginnerContest181 Examen et résumé
AtCoderBeginnerContest182 Examen et résumé
AtCoderBeginnerContest183 Review & Résumé
AtCoderBeginnerContest179 Review & Résumé
AtCoderBeginnerContest178 Review & Summary (second semestre)
AtCoderBeginnerContest175 Review & Summary (premier 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é Python
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