[PYTHON] AtCoder Beginner Contest 079 Revue des questions précédentes

C'est la deuxième question passée.

Temps requis

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

Impressions

Ce n'était pas long hier soir, alors j'ai rempli un temps simple.

Problème A

Pour trois consécutifs, il suffit de comparer deux fois deux consécutifs (si vous changez de méthode de comparaison et utilisez un opérateur ternaire, ce sera comme suit)

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

Problème B

Tournez simplement la boucle et pensez dans l'ordre de l'avant. Le second est le code le plus court

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)

Problème C

J'ai écrit un code très long, mais au final il n'y a que 8 façons ...

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

Problème D

Quand je l'ai résolu auparavant, j'ai fait beaucoup d'erreurs, donc je me dépêchais de le résoudre. L'erreur à ce moment-là était ** erreur d'indexation ** et ** [] * n pour rendre tous les tableaux imbriqués le même objet **. Je ne pouvais pas me tromper si je les remarquais tous les deux, donc j'ai pu les résoudre en douceur cette fois. De plus, puisque ce problème est de trouver la puissance magique minimale ** lorsque chaque nombre est finalement changé en 1, cela signifie que vous pouvez passer par certains nombres en cours de route. En d'autres termes, ** cela peut se réduire au problème de trouver le chemin le plus court d'un certain nombre i (0 <= i <= 9) à 1, ** et cela devrait conduire à l'idée d'utiliser facilement la méthode WF. Si vous utilisez la méthode WF, vous pouvez réécrire les nombres dans chaque cellule. En outre, à ce stade, chaque cellule peut être réécrite ** indépendamment **, ce qui est considéré comme utile pour arriver à l'idée que la méthode WF doit être utilisée en premier.

answerD.py


h,w=map(int,input().split())
#Initialisation du tableau bidimensionnel utilisé dans WF
WF=[list(map(int,input().split())) for i in range(10)]
#Mur donné
a=[list(map(int,input().split())) for i in range(h)]

#Méthode WF
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])

#Réécrire à 1 et donner un pouvoir magique+Faire
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 Revue des questions précédentes
AtCoder Beginner Contest 072 Revue des questions précédentes
AtCoder Beginner Contest 085 Revue des questions précédentes
AtCoder Beginner Contest 113 Revue des questions précédentes
AtCoder Beginner Contest 074 Revue des questions précédentes
AtCoder Beginner Contest 051 Revue des questions précédentes
AtCoder Beginner Contest 127 Revue des questions précédentes
AtCoder Beginner Contest 119 Revue des questions précédentes
AtCoder Beginner Contest 151 Revue des questions précédentes
AtCoder Beginner Contest 075 Revue des questions précédentes
AtCoder Beginner Contest 054 Revue des questions précédentes
AtCoder Beginner Contest 110 Revue des questions précédentes
AtCoder Beginner Contest 117 Revue des questions précédentes
AtCoder Beginner Contest 070 Revue des questions précédentes
AtCoder Beginner Contest 105 Revue des questions précédentes
AtCoder Beginner Contest 112 Revue des questions précédentes
AtCoder Beginner Contest 076 Revue des questions précédentes
AtCoder Beginner Contest 069 Revue des questions précédentes
AtCoder Beginner Contest 079 Revue des questions précédentes
AtCoder Beginner Contest 056 Revue des questions précédentes
AtCoder Beginner Contest 087 Revue des questions précédentes
AtCoder Beginner Contest 067 Revue des questions précédentes
AtCoder Beginner Contest 093 Revue des questions précédentes
AtCoder Beginner Contest 046 Revue des questions précédentes
AtCoder Beginner Contest 123 Revue des questions précédentes
AtCoder Beginner Contest 049 Revue des questions précédentes
AtCoder Beginner Contest 078 Revue des questions précédentes
AtCoder Beginner Contest 081 Revue des questions précédentes
AtCoder Beginner Contest 047 Revue des questions précédentes
AtCoder Beginner Contest 060 Revue des questions précédentes
AtCoder Beginner Contest 104 Revue des questions précédentes
AtCoder Beginner Contest 057 Revue des questions précédentes
AtCoder Beginner Contest 121 Revue des questions précédentes
AtCoder Beginner Contest 126 Revue des questions précédentes
AtCoder Beginner Contest 090 Revue des questions précédentes
AtCoder Beginner Contest 103 Revue des questions précédentes
AtCoder Beginner Contest 061 Revue des questions précédentes
AtCoder Beginner Contest 059 Revue des questions précédentes
AtCoder Beginner Contest 044 Revue des questions précédentes
AtCoder Beginner Contest 083 Revue des questions précédentes
AtCoder Beginner Contest 048 Revue des questions précédentes
AtCoder Beginner Contest 124 Revue des questions précédentes
AtCoder Beginner Contest 116 Revue des questions précédentes
AtCoder Beginner Contest 097 Revue des questions précédentes
AtCoder Beginner Contest 088 Revue des questions précédentes
AtCoder Beginner Contest 092 Revue des questions précédentes
AtCoder Beginner Contest 099 Revue des questions précédentes
AtCoder Beginner Contest 065 Revue des questions précédentes
AtCoder Beginner Contest 053 Revue des questions précédentes
AtCoder Beginner Contest 094 Revue des questions précédentes
AtCoder Beginner Contest 063 Revue des questions précédentes
AtCoder Beginner Contest 107 Revue des questions précédentes
AtCoder Beginner Contest 071 Revue des questions précédentes
AtCoder Beginner Contest 064 Revue des questions précédentes
AtCoder Beginner Contest 082 Revue des questions précédentes
AtCoder Beginner Contest 084 Revue des questions précédentes
AtCoder Beginner Contest 068 Revue des questions précédentes
AtCoder Beginner Contest 058 Revue des questions précédentes
AtCoder Beginner Contest 043 Revue des questions précédentes
AtCoder Beginner Contest 098 Revue des questions précédentes
AtCoder Beginner Contest 114 Revue des questions précédentes