[PYTHON] AtCoder Beginner Contest 079 Rückblick auf frühere Fragen

Dies ist die zweite Frage der Vergangenheit.

Benötigte Zeit

スクリーンショット 2020-01-05 22.56.14.png

Impressionen

Es war nicht lange letzte Nacht, also füllte ich eine einfache Zeit aus.

Problem A

Für drei aufeinanderfolgende müssen Sie nur zwei aufeinanderfolgende zweimal vergleichen (wenn Sie die Vergleichsmethode ändern und einen ternären Operator verwenden, ist dies wie folgt).

answerA.py


n=input()
x=[int(i) for i in n]

if (x[0]==x[1] and x[1]==x[2]) or (x[1]==x[2] and x[2]==x[3]):
    print("Yes")
else:
    print("No")

answerA_better.py


n=input()
x=[int(i) for i in n]
print("Yes" if x[1]==x[2] and (x[0]==x[1] or x[2]==x[3]) else "No")

B-Problem

Drehen Sie einfach die Schleife und denken Sie in der richtigen Reihenfolge von vorne. Der zweite ist der kürzere Code

answerB.py


n=int(input())
k,l=2,1
for i in range(n-1):
    m=l
    l=k+l
    k=m
print(l)

answerB_better.py


k,l=-1,2
for i in [0]*int(input()):k,l=l,k+l
print(l)

C-Problem

Ich habe einen sehr langen Code geschrieben, aber am Ende gibt es nur 8 Möglichkeiten ...

answerC.py


a,b,c,d=[int(i) for i in input()]
l=7-a
f=[-1,-1,-1]
for i in range(2):
    for j in range(2):
        for k in range(2):
            l_sub=l
            if i==0:
                l_sub-=(b)
            else:
                l_sub-=(-b)
            if j==0:
                l_sub-=(c)
            else:
                l_sub-=(-c)
            if k==0:
                l_sub-=(d)
            else:
                l_sub-=(-d)
            if l_sub==0:
                f=[i,j,k]
        if f!=[-1,-1,-1]:
            break
    if f!=[-1,-1,-1]:
        break
s=str(a)
if f[0]==0:
    s+="+"
else:
    s+="-"
s+=str(b)
if f[1]==0:
    s+="+"
else:
    s+="-"
s+=str(c)
if f[2]==0:
    s+="+"
else:
    s+="-"
s+=str(d)
s+="=7"

print(s)

answerC_better.py


a,b,c,d=[int(i) for i in input()]

if a+b+c+d==7:
    print("{}+{}+{}+{}=7".format(a,b,c,d))
elif a+b+c-d==7:
    print("{}+{}+{}-{}=7".format(a,b,c,d))
elif a+b-c+d==7:
    print("{}+{}-{}+{}=7".format(a,b,c,d))
elif a-b+c+d==7:
    print("{}-{}+{}+{}=7".format(a,b,c,d))
elif a+b-c-d==7:
    print("{}+{}-{}-{}=7".format(a,b,c,d))
elif a-b+c-d==7:
    print("{}-{}+{}-{}=7".format(a,b,c,d))
elif a-b-c+d==7:
    print("{}-{}-{}+{}=7".format(a,b,c,d))
else:
    print("{}-{}-{}-{}=7".format(a,b,c,d))

D Problem

Als ich es vorher gelöst habe, habe ich viele Fehler gemacht, also habe ich mich beeilt, es zu lösen. Der Fehler zu dieser Zeit bestand darin, ** Indizierungsfehler ** und ** [] * n zu schreiben, um alle verschachtelten Arrays zum gleichen Objekt zu machen **. Ich konnte keinen Fehler machen, wenn ich beide bemerkte, also konnte ich sie dieses Mal reibungslos lösen. Da dieses Problem darin besteht, die minimale magische Kraft ** zu finden, wenn jede Zahl endgültig auf 1 geändert wird, bedeutet dies auch, dass Sie unterwegs einige Zahlen durchgehen können. Mit anderen Worten, ** es kann auf das Problem reduziert werden, den kürzesten Weg von einer bestimmten Zahl i (0 <= i <= 9) bis 1 zu finden, ** und es sollte zu der Idee führen, die WF-Methode leicht zu verwenden. Wenn Sie die WF-Methode verwenden, können Sie die Zahlen in jeder Zelle neu schreiben. Außerdem kann zu diesem Zeitpunkt jede Zelle ** unabhängig ** umgeschrieben werden, was als nützlich erachtet wird, um auf die Idee zu kommen, dass die WF-Methode zuerst verwendet werden sollte.

answerD.py


h,w=map(int,input().split())
#Initialisierung eines in WF verwendeten zweidimensionalen Arrays
WF=[list(map(int,input().split())) for i in range(10)]
#Gegebene Wand
a=[list(map(int,input().split())) for i in range(h)]

#WF-Methode
for k in range(10):
    for i in range(10):
        for j in range(10):
            WF[i][j]=min(WF[i][j],WF[i][k]+WF[k][j])

#Schreiben Sie auf 1 um und geben Sie eine magische Kraft+Machen
ans=0
for i in range(h):
    for j in range(w):
        if a[i][j]!=-1:
            ans+=WF[a[i][j]][1]
print(ans)

Recommended Posts

AtCoder Beginner Contest 102 Rückblick auf frühere Fragen
AtCoder Beginner Contest 072 Rückblick auf frühere Fragen
AtCoder Beginner Contest 085 Rückblick auf frühere Fragen
AtCoder Beginner Contest 113 Rückblick auf frühere Fragen
AtCoder Beginner Contest 074 Rückblick auf frühere Fragen
AtCoder Beginner Contest 051 Rückblick auf frühere Fragen
AtCoder Beginner Contest 127 Rückblick auf frühere Fragen
AtCoder Beginner Contest 119 Rückblick auf frühere Fragen
AtCoder Beginner Contest 151 Rückblick auf frühere Fragen
AtCoder Beginner Contest 075 Rückblick auf frühere Fragen
AtCoder Beginner Contest 054 Rückblick auf frühere Fragen
AtCoder Beginner Contest 110 Rückblick auf frühere Fragen
AtCoder Beginner Contest 117 Rückblick auf frühere Fragen
AtCoder Beginner Contest 070 Rückblick auf frühere Fragen
AtCoder Beginner Contest 105 Rückblick auf frühere Fragen
AtCoder Beginner Contest 112 Rückblick auf frühere Fragen
AtCoder Beginner Contest 076 Rückblick auf frühere Fragen
AtCoder Beginner Contest 069 Rückblick auf frühere Fragen
AtCoder Beginner Contest 079 Rückblick auf frühere Fragen
AtCoder Beginner Contest 056 Rückblick auf frühere Fragen
AtCoder Beginner Contest 087 Rückblick auf frühere Fragen
AtCoder Beginner Contest 067 Rückblick auf frühere Fragen
AtCoder Beginner Contest 093 Rückblick auf frühere Fragen
AtCoder Beginner Contest 046 Rückblick auf frühere Fragen
AtCoder Beginner Contest 123 Überprüfung früherer Fragen
AtCoder Beginner Contest 049 Rückblick auf frühere Fragen
AtCoder Beginner Contest 078 Rückblick auf frühere Fragen
AtCoder Beginner Contest 081 Rückblick auf frühere Fragen
AtCoder Beginner Contest 047 Rückblick auf frühere Fragen
AtCoder Beginner Contest 060 Rückblick auf frühere Fragen
AtCoder Beginner Contest 104 Rückblick auf frühere Fragen
AtCoder Beginner Contest 057 Rückblick auf frühere Fragen
AtCoder Beginner Contest 121 Rückblick auf frühere Fragen
AtCoder Beginner Contest 126 Rückblick auf frühere Fragen
AtCoder Beginner Contest 090 Rückblick auf frühere Fragen
AtCoder Beginner Contest 103 Rückblick auf frühere Fragen
AtCoder Beginner Contest 061 Rückblick auf frühere Fragen
AtCoder Beginner Contest 059 Rückblick auf frühere Fragen
AtCoder Beginner Contest 044 Rückblick auf frühere Fragen
AtCoder Beginner Contest 083 Rückblick auf frühere Fragen
AtCoder Beginner Contest 048 Rückblick auf frühere Fragen
AtCoder Beginner Contest 124 Rückblick auf frühere Fragen
AtCoder Beginner Contest 116 Rückblick auf frühere Fragen
AtCoder Beginner Contest 097 Rückblick auf frühere Fragen
AtCoder Beginner Contest 088 Rückblick auf frühere Fragen
AtCoder Beginner Contest 092 Rückblick auf frühere Fragen
AtCoder Beginner Contest 099 Rückblick auf frühere Fragen
AtCoder Beginner Contest 065 Rückblick auf frühere Fragen
AtCoder Beginner Contest 053 Rückblick auf frühere Fragen
AtCoder Beginner Contest 094 Rückblick auf frühere Fragen
AtCoder Beginner Contest 063 Rückblick auf frühere Fragen
AtCoder Beginner Contest 107 Rückblick auf frühere Fragen
AtCoder Beginner Contest 071 Rückblick auf frühere Fragen
AtCoder Beginner Contest 064 Rückblick auf frühere Fragen
AtCoder Beginner Contest 082 Rückblick auf frühere Fragen
AtCoder Beginner Contest 084 Rückblick auf frühere Fragen
AtCoder Beginner Contest 068 Rückblick auf frühere Fragen
AtCoder Beginner Contest 043 Rückblick auf frühere Fragen
AtCoder Beginner Contest 098 Rückblick auf frühere Fragen
AtCoder Beginner Contest 114 Rückblick auf frühere Fragen