[PYTHON] Ich habe At Coder Beginner Selection ausprobiert

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.

ABC049C - Tagtraum

#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.

Zusammenfassung

Rückblickend gab es verschiedene Verbesserungen. Dem nächsten Wettbewerb gewidmet ...

Recommended Posts

Ich habe At Coder Beginner Selection ausprobiert
[Wettkampfpraxis] Ich habe den AtCoder Beginner Contest 175 (A ~ C) ausprobiert.
[Wettkampfpraxis] Ich habe den AtCoder Beginner Contest 171 ausprobiert
Bei Coder (2020/09/08)
[At Coder] Anfängerwettbewerb 175 Einführung in die ABCD-Python-Lösung
Ich habe versucht, PyCaret mit der schnellsten Geschwindigkeit zu verwenden
Ich habe versucht, eine selektive Sortierung in Python zu implementieren