[PYTHON] AtCoderBeginnerContest182 Überprüfung & Zusammenfassung

AtCoder ABC182 Dies ist eine Zusammenfassung der Probleme von AtCoderBeginnerContest182, die am 08.11.2020 (So) ausgehend von Problem A unter Berücksichtigung der Berücksichtigung durchgeführt wurden. Das Problem wird zitiert, aber bitte überprüfen Sie die Wettbewerbsseite für Details. Klicken Sie hier für die Wettbewerbsseite Offizieller Kommentar

Problem A twiblr

Problemstellung Sie haben einen SNS namens twiblr. Mit twiblr können Sie die Anzahl der Follower erhöhen, solange die Anzahl der Follower $ 2 × ($ Follower $) + 100 $ nicht überschreitet. Ihre aktuelle Anzahl von Followern beträgt $ A $ und Ihre aktuelle Anzahl von Followern beträgt $ B $. Wie viele Follower kann ich noch haben?

abc182a.py


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

Problem B Fast GCD

Problemstellung Gegeben die Folge $ A (A_1, A_2, A_3,…, A_N) $. Definieren Sie den GCD-Grad der positiven Ganzzahl $ k $ als die durch $ k $ teilbare Zahl von $ A_1, A_2, A_3,…, A_N $. Suchen Sie eine der ganzen Zahlen größer oder gleich $ 2 $, die den GCD-Grad maximiert. Wenn es mehrere mit dem maximalen GCD-Grad gibt, spielt es keine Rolle, welcher ausgegeben wird.

GCD-Grad von $ p $ $ \ geq p × gCD-Grad von k $ ($ p $ ist eine Primzahl, $ k $ ist eine natürliche Zahl) Daher habe ich es mit der Absicht implementiert, nur die Primzahlen zu untersuchen, aber es war unnötig, weil $ N $ klein war. Außerdem habe ich verschiedene Bedingungen für das Verlassen der Schleife geschrieben, aber ich brauchte diese im Wettbewerb nicht, um sie schnell zu lösen.

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)

C Problem Zu 3

Problemstellung Jede Ziffer erhält eine positive Ganzzahl $ N $, sodass $ 0 $ nicht angezeigt wird. Sei $ k $ die Anzahl der Stellen in $ N $. Ich möchte ein Vielfaches von $ 3 $ machen, indem ich $ 0 $ oder mehr und weniger als $ k $ in den Ziffern von $ N $ lösche und die verbleibenden Ziffern in derselben Reihenfolge kombiniere. Bestimmen Sie, ob Sie ein Vielfaches von $ 3 $ erstellen können, und ermitteln Sie in diesem Fall die Mindestanzahl der zu löschenden Ziffern.

Es ist kein sehr guter Code, aber es ist genau das, was ich eingereicht habe. Klassifizieren Sie Fälle sorgfältig.

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)

D Problem Wandern

Problemstellung Bei gegebener Reihenfolge $ A_1, A_2, A_3,…, A_N $. Diese Zahlenfolge kann negative Elemente enthalten. Der Roboter, der sich an der Koordinate $ 0 $ auf der Zahlenlinie befindet, führt die folgenden Operationen der Reihe nach aus. ・ Gehe vorwärts $ A_1 $ in die positive Richtung. ・ Vorwärts $ A_1 $ in die positive Richtung und $ A_2 $ in die positive Richtung. ・ $ A_1 $ in die positive Richtung vorrücken, $ A_2 $ in die positive Richtung vorrücken und $ A_3 $ in die positive Richtung vorrücken. ⋮ ・ Vorrücken von $ A_1 $ in die positive Richtung, Vorrücken von $ A_2 $ in die positive Richtung, Vorrücken von $ A_3 $ in die positive Richtung, ..., Vorrücken von $ A_N $ in die positive Richtung. Ermitteln Sie den Maximalwert der Roboterkoordinaten vom Beginn bis zum Ende der Operation.

Ich habe das Gefühl, dass es gut gelöst wurde. TLE wurde vermieden, indem es möglich wurde, mit einer einzigen Berechnung den Zeitpunkt zu ermitteln, zu dem in jedem Schritt die positivste Richtung erreicht werden kann.

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)

Auch diesmal konnte ich das D-Problem in einem guten Tempo lösen, aber ich blieb beim E-Problem. Es ist Zeit, die Probleme der Vergangenheit zu lösen, damit ich 5 abschließen kann.

Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

AtCoderBeginnerContest181 Überprüfung & Zusammenfassung
AtCoderBeginnerContest182 Überprüfung & Zusammenfassung
AtCoderBeginnerContest183 Überprüfung & Zusammenfassung
AtCoderBeginnerContest179 Review & Zusammenfassung
AtCoderBeginnerContest178 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest161 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest164 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest164 Review & Summary (erste Hälfte)
AtCoderBeginnerContest169 Review & Summary (erste Hälfte)
AtCoderBeginnerContest176 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest174 Review & Summary (erste Hälfte)
AtCoderBeginnerContest173 Review & Summary (Erste Hälfte)
AtCoderBeginnerContest168 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest169 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest165 Review & Summary (erste Hälfte)
AtCoderBeginnerContest170 Review & Summary (erste Hälfte)
AtCoderBeginnerContest167 Review & Summary (erste Hälfte)
AtCoderBeginnerContest166 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest177 Review & Summary (erste Hälfte)
AtCoderBeginnerContest171 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest168 Review & Summary (erste Hälfte)
AtCoderBeginnerContest174 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest178 Review & Summary (erste Hälfte)
AtCoderBeginnerContest171 Review & Summary (erste Hälfte)
AtCoderBeginnerContest166 Review & Summary (erste Hälfte)
AtCoderBeginnerContest161 Review & Summary (erste Hälfte)
AtCoderBeginnerContest173 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest172 Review & Summary (erste Hälfte)
AtCoderBeginnerContest177 Review & Summary (zweite Hälfte)
AtCoderBeginnerContest176 Review & Summary (erste Hälfte)
Django Zusammenfassung
python-pptx Zusammenfassung
Linux Zusammenfassung
Python-Zusammenfassung
Django Zusammenfassung
pyenv Zusammenfassung
Zusammenfassung der Zeichenketten 1
pytest Zusammenfassung
matplotlib Zusammenfassung
Funktionsüberprüfung