Ich habe AtCoder erst vor einer Woche gestartet und damals AtCoder Beginners Selection ausprobiert. Da ich neu in der wettbewerbsfähigen Programmierung war, lernte ich zunächst, wie man tippt. Ich habe die Antworten und meine Gedanken zu mir selbst zusammengefasst.
PracticeA - Welcome to AtCoder
a = int(input())
b, c = map(int, input().split())
s = input()
print('{} {}'.format(a+b+c,s))
Input / Output-bezogene Tests int(input()) map(int, input().split()) Als ich später andere Wettbewerbe löste, erfuhr ich, dass ich diese beiden häufig verwenden würde.
ABC086A - Product
strings = ['Even','Odd']
a, b = map(int, input().split())
print(strings[(a*b)%2])
Die Frage nach der Beantwortung einer seltsamen Situation.
ABC081A - Placing Marbles
#Placing Marbles
S = list(input())
print(S.count('1'))
Das Problem, die Anzahl der Stellen zu finden, die 1 ist, ergibt sich aus dem eingegebenen numerischen Wert. Ich gab es als Zeichenkette ein und beurteilte die Nummer.
ABC081B - Shift only
#Shift only
import numpy as np
N = int(input())
A = np.array(list(map(int, input().split())))
count = 0
check = A%2
while np.count_nonzero(check)==0 :
count += 1
A = A/2
check = A%2
print(count)
Die Frage, wie oft das Eingabearray durch 2 teilbar ist. Im Numpy-Array wird der Operator auf jedes Element angewendet, sodass die Eingabe von Numpy empfangen und beantwortet wird. Wenn ich jetzt darüber nachdenke, habe ich das Gefühl, dass ich mich nicht um die Variablenprüfung kümmern musste ...
ABC087B - Coins
#Coins
A = int(input())
B = int(input())
C = int(input())
X = int(input())
count=0
for i in range(A+1):
yo = X-i*500
if(yo>=0):
for j in range(B+1):
yoi = yo-j*100
if(yoi>=0):
for k in range(C+1):
yoii = yoi-k*50
if(yoii==0):
count +=1
print(count)
Die Anzahl der Kombinationen, die X Yen aus A 500 Yen Bällen, B 100 Yen Bällen und C 50 Yen Bällen ergeben.
Die Antwortrichtlinie lautet Eine 100-Yen-Kugelschlaufe mit einer 500-Yen-Kugel, die auf 0 Blatt befestigt ist. In der 100-Yen-Ballschleife ist sie auf 0 100-Yen-Bälle festgelegt und ist eine 50-Yen-Ballschleife. Wenn X Yen mit C oder weniger 50 Yen Bällen erzeugt werden kann, kehren Sie zur oberen 100 Yen Kugelschleife zurück und verwenden Sie eine 100 Yen Kugel als eine ... Da die for-Anweisung gemultiplext ist, war dies die Grenze, während ich es einfacher machen wollte.
ABC083B - Some Sums
#Some Sums
N, A, B = list(map(int, input().split()))
count = 0
for j in range(N):
S = str(j+1)
numN = 0
for i in range(len(S)):
numN += int(S[i])
if A <= numN <= B:
count += j+1
print(count)
Die Summe aller ganzen Zahlen x wobei 1 <= x <= N und A <= Summe jeder Ziffer <= B. Ich änderte die Zahl in str, erhielt jede Ziffer mit int und berechnete die Summe mit der for-Anweisung.
Reflexionen Es musste keine Liste sein, da es 3 Eingaben in 3 Variablen empfängt. Ich konnte N aus 1 mit Bereich (1, N + 1) berechnen. Ich konnte die Summenmethode anwenden (?)
ABC088B - Card Game for Two
#Card Game for Two
N = int(input())
a = sorted(map(int, input().split()))
count = 0
for i in range(N):
count += a[-i-1] * (-1)**i
print(count)
Alice und Bob erwerben abwechselnd N Karten mit beliebigen Zahlen, damit die maximale Punktzahl erreicht wird. Schließlich das Problem, den Punktedifferenz zwischen Alice und Bob zu finden.
Sortieren Sie die N Karten in absteigender Reihenfolge und geben Sie die Gewinnchancen an Alice und die Abendkarten an Bob weiter. ↓ Um die Punktedifferenz endgültig zu erhalten, ist es ratsam, die ungeraden Zahlen zu addieren und die geraden Zahlen zu subtrahieren. Ich dachte und antwortete auf diese Weise.
ABC085B - Kagami Mochi
import numpy as np
N = int(input())
d = np.zeros(N)
for i in range(N):
d[i] = int(input())
sorted_d = np.unique(d)
print(len(sorted_d))
Angesichts der Durchmesser von N Scheiben stellt sich die Frage, wie viele Stufen gestapelt werden können, wenn sie in absteigender Reihenfolge von oben nach unten gestapelt werden.
Scheiben mit dem gleichen Durchmesser können nicht gestapelt werden. ↓ Sie können ein eindeutiges Array erhalten, indem Sie die Funktion von Numpy verwenden, die ein eindeutiges Array zurückgibt. Finden Sie die Anzahl der Elemente. Ich dachte endlich nach und antwortete.
ABC085C - Otoshidama
#Otoshidama
N, Y = list(map(int, input().split()))
y_man = Y
flag = False
out = [-1,-1,-1]
for i in range(N+1):
y_gsen = y_man
for j in range(N-i+1):
n_sen = int(y_gsen/1000)
if N-i-j == n_sen:
out = [i,j,n_sen]
flag = True
break
y_gsen -= 5000
if flag:
break
y_man -= 10000
print('{} {} {}'.format(out[0],out[1],out[2]))
# print(out[0]*10000+out[1]*5000+out[2]*1000)
Ob 10.000 Yen-Rechnungen, 5.000 Yen-Rechnungen und 1.000 Yen-Rechnungen in N- und Y-Yen kombiniert werden können. Beantworten Sie die Kombination, wenn möglich (-1 -1 -1, wenn nicht möglich).
Ich habe einen Weg gefunden, aus der unteren for-Anweisung herauszukommen, als ich aus der oberen for-Anweisung herauskam, aber es war schwer zu verstehen und ich habe sie durch das Setzen einer Variablen namens flag ersetzt.
#Hakuchumu
S = input()
m = ['dream','dreamer','erase','eraser']
for i in range(len(m)):
m[i] = m[i][::-1]
lenS = len(S)
revS = S[::-1]
Header = 0
flag = True
Ans = 'YES'
while Header < lenS-1 :
flag = True
if Header + 6 < lenS:
# print('6t')
if revS[Header:Header+7]==m[1]:
Header += 7
flag = False
# print('6tt')
if Header + 5 < lenS:
# print('5t')
if revS[Header:Header+6]==m[3]:
Header += 6
flag = False
# print('5tt')
if Header + 4 < lenS:
# print('4t')
if revS[Header:Header+5]==m[0] or revS[Header:Header+5]==m[2]:
Header += 5
flag = False
# print('4tt')
if flag:
Ans = 'NO'
# print('out')
break
print(Ans)
Das Problem der Bestimmung, ob die Zeichenkette S vervollständigt werden kann, indem 4 von Traum ',' Träumer ',' Löschen 'und' Radierer 'willkürlich angeordnet werden.
Ich dachte an eine Methode, um vom Anfang der Zeichenkette aus zu urteilen und die Kopfzeile um die Anzahl der Zeichen zu verschieben, wenn sie übereinstimmen, aber ich wurde durch die bedingte Verzweigung der Zeichenkette besiegt, deren Aufteilung kompliziert ist, wie z. B. Träumerei. Die Antwort basiert auf dem Hinweis, dass es keine Übereinstimmung gibt, wenn die Zeichenfolge invertiert wird.
ABC086C - Traveling
#Traveling
import numpy as np
N = int(input())
Plan = np.zeros((N+1,3))
for i in range(N):
Plan[i+1] = list(map(int, input().split()))
able = 'Yes'
for j in range(N):
t, x, y = Plan[j]
t_next, x_next, y_next = Plan[j+1]
distance = abs(x-x_next) + abs(y-y_next)
delta = t_next - t
amari = delta - distance
# print(distance,delta,amari)
if amari < 0 or amari%2 == 1:
able = 'No'
break
print(able)
Die Frage ist, ob es möglich ist, eine Kombination von x_n und y_n zum Zeitpunkt t_n zu haben, wenn zu einem Gitterpunkt von einem der oberen, unteren, linken und rechten gleichzeitig bewegt wird.
Stellen Sie zunächst fest, dass der nächste x, y-Abstand kleiner als t ist. Und wenn man bedenkt, dass es sich immer bewegt, ist es machbar, wenn zu oft gerade sind. Wenn es sich um eine ungerade Zahl handelt, wird festgestellt, dass sie nicht erreichbar ist, da sie sich bewegen muss.
Rückblickend gab es verschiedene Verbesserungen. Dem nächsten Wettbewerb gewidmet ...
Recommended Posts