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
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)
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)
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)
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