[PYTHON] AtCoderBeginnerContest172 Review & Summary (premier semestre)

AtCoder ABC172 Ceci est un résumé des problèmes du concours AtCoder Beginner Contest 172 qui a eu lieu le samedi 27/06/2020, en commençant par le problème A et en tenant compte des considérations. Le premier semestre traite des problèmes jusqu'à ABCD. 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 Calc

Énoncé du problème L'entier $ a $ est entré. Sortez la valeur $ a + a ^ 2 + a ^ 3 $.

abc172a.py


a = int(input())
print(a + a**2 + a**3)

Problème B Changement mineur

Énoncé du problème Compte tenu des chaînes $ S, T $. Lorsque vous remplacez $ S $ par $ T $ en répétant les opérations suivantes, recherchez le nombre minimum d'opérations. Opération: Sélectionnez le caractère $ 1 $ de $ S $ et réécrivez-le avec un autre caractère

J'ai vérifié avec l'instruction for si chaque caractère correspond à l'avant.

abc172b.py


s = input()
t = input()
count = 0
for i in range(len(s)):
    if s[i] != t[i]:
        count +=1
print(count)

Problème C Tsuundoku

Énoncé du problème Il y a deux pupitres A et B. Le bureau A a des livres $ N $ et le bureau B a des livres $ M $ empilés verticalement. Le livre $ (1 \ leq i \ leq N) $ actuellement chargé sur le bureau A à la $ i $ ème position à partir du haut prend $ A_i $ minutes à lire, et le bureau B est actuellement à la $ i $ ème position à partir du haut. Le livre $ (1 \ leq i \ leq M) $ chargé est requis pour lire $ B_i $. Considérez les actions suivantes. ・ Sélectionnez le bureau sur lequel reste le livre, lisez le livre sur le dessus du bureau et retirez-le du bureau. Combien de livres pouvez-vous lire lorsque vous répétez cette action pour que la durée totale du trajet ne dépasse pas $ K $? Ignorez le temps que cela prend à part la lecture d'un livre.

Pour le moment, je pensais que je le résoudrais de manière récursive, mais il était clair que cela prendrait du temps à s'exécuter, alors j'ai écrit le code avec une ingéniosité variée. Je voulais pouvoir écrire si simplement avec le code de référence de python dans l'explication.

abc172c.py


n, m, k = map(int, input().split())
a_list = list(map(int, input().split()))
b_list = list(map(int, input().split()))
new_a_list = [[0, 0]]
a_sum = 0
for i in range(0, n):
    a_sum += a_list[i]
    if a_sum <= k:
        new_a_list.append([i + 1, a_sum])
    else:
        break
best = len(new_a_list) - 1
b_sum = 0
a_sum = new_a_list[-1][1]
a_count = new_a_list[-1][0]
flag = 1
for i in range(0, m):
    b_sum += b_list[i]
    while True:
        if b_sum <= k - a_sum:
            if best < i + 1 + a_count:
                best = i + 1 + a_count
            break
        if a_count == 0:
            flag = 0
            break
        a_count -= 1
        a_sum = new_a_list[-(len(new_a_list) - a_count)][1]
    if flag == 0:
        break
print(best)

D problème Somme des diviseurs

Énoncé du problème Soit $ f (X) $ le nombre de fractions positives de $ X $ pour l'entier positif $ X $. Étant donné un entier positif $ N $, trouvez $ \ sum_ {K = 1} ^ {N} K × f (K) $.

Manque accablant de compétences mathématiques (sueur) Je ne pouvais pas le résoudre, donc je pouvais le résoudre en mettant en œuvre ce qui était écrit dans l'explication.

abc172d.py


n = int(input())
total = 0
for j in range(1, n + 1):
    x = j
    y = n // x
    total += y * (y + 1) * x // 2
print(total)

L'implémentation était simple mais je ne pouvais pas y penser, et la limite de temps d'exécution: 3 sec a été négligée en premier lieu. (Je ne pense pas que cela puisse être résolu même si cela n'est pas négligé)

C'est la fin du premier semestre. Merci d'avoir lu jusqu'à la fin du premier semestre.

La seconde moitié expliquera le problème EF, mais je ne pense pas pouvoir écrire un article à temps (sueur).

Recommended Posts

AtCoderBeginnerContest164 Review & Summary (premier semestre)
AtCoderBeginnerContest169 Review & Summary (premier semestre)
AtCoderBeginnerContest174 Review & Summary (premier semestre)
AtCoderBeginnerContest173 Review & Summary (First Half)
AtCoderBeginnerContest165 Review & Summary (premier semestre)
AtCoderBeginnerContest170 Review & Summary (premier semestre)
AtCoderBeginnerContest167 Review & Summary (premier semestre)
AtCoderBeginnerContest177 Review & Résumé (premier semestre)
AtCoderBeginnerContest168 Review & Summary (premier semestre)
AtCoderBeginnerContest178 Review & Summary (premier semestre)
AtCoderBeginnerContest171 Review & Summary (premier semestre)
AtCoderBeginnerContest161 Review & Summary (premier semestre)
AtCoderBeginnerContest172 Review & Summary (premier semestre)
AtCoderBeginnerContest176 Review & Summary (premier semestre)
AtCoderBeginnerContest178 Review & Summary (second semestre)
AtCoderBeginnerContest161 Review & Summary (second semestre)
AtCoderBeginnerContest164 Review & Summary (second semestre)
AtCoderBeginnerContest176 Review & Summary (second semestre)
AtCoderBeginnerContest168 Review & Summary (second semestre)
AtCoderBeginnerContest169 Review & Summary (second semestre)
AtCoderBeginnerContest166 Review & Summary (second semestre)
AtCoderBeginnerContest171 Review & Summary (second semestre)
AtCoderBeginnerContest174 Review & Summary (second semestre)
AtCoderBeginnerContest173 Review & Summary (second semestre)
AtCoderBeginnerContest177 Review & Summary (second semestre)
AtCoderBeginnerContest181 Examen et résumé
AtCoderBeginnerContest179 Review & Résumé
Résumé du didacticiel Django Girls Première moitié
AtCoder Revue des questions précédentes (première moitié de 12 / 8,9)