[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python

introduction

Dans cet article, AOJ a présenté dans "Directives pour améliorer les pros de la compétition et AtCoder enseignées par Red Coder [Débutant: Commençons les pros de la compétition]" Je vais expliquer 40 questions de "Introduction à la programmation I" en Python.

J'ai moi-même commencé la programmation compétitive sans expérience en programmation. Après avoir lu le livre d'introduction "Des bases du langage Python du programmeur d'auto-apprentissage à la façon de travailler", "Introduction To Programming I" Nous avons travaillé sur //judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1). C'est juste une histoire individuelle, mais après avoir résolu 40 questions, vous serez en mesure de servir des performances de thé au ** AtCoder Beginner Contest (ABC) ** tenu à Atcoder. Je pense que je vais acquérir les connaissances de base pour la programmation compétitive.

ITP1_1_A Hello World

ITP1_1_A


print("Hello World")

[Explication] print affiche Hello World.

ITP1_1_B X:Cubic

ITP1_1_B


x=int(input())
print(x**3)

[Explication] Puisque ʻinput () est reçu sous forme de chaîne de caractères, il est traité après l'avoir converti en une valeur numérique avec ʻint ().

ITP1_1_C Rectangle

ITP1_1_C


a,b=map(int,input().split())
print(a*b,2*(a+b))

[Explication] ʻinput (). Split () peut être utilisé pour une entrée à 1 ligne / multi-colonnes. Cependant, comme il est reçu sous forme de chaîne de caractères, il est traité après en avoir fait une valeur numérique avec map et ʻint. Pour la saisie, reportez-vous à "Introduction à Python à partir d'AtCoder".

ITP1_1_D Watch

ITP1_1_D


S=int(input())
print(S//3600,":",(S%3600)//60,":",S%60, sep="")

[Explication] Le quotient des secondes divisé par «3600» est «h», le quotient des secondes divisé par «3600» divisé par «60» est «m» et le nombre de secondes est «60». Le reste après la division est «s». Pour connecter h, m, s et: with+, h, m, s doit être une chaîne. Même si la chaîne de caractères et la valeur numérique sont mélangées, s'il s'agit de «print», elle peut être sortie sans aucun problème. Pour la sortie, reportez-vous à "Introduction à Python à partir d'AtCoder".

ITP1_2_A Small, Large, or Equal

ITP1_2_A


a,b=map(int,input().split())
if a>b:
    print("a > b")
elif a<b:
    print("a < b")
else:
    print("a == b")

[Explication] Écrivez comme il est dit.

ITP1_2_B Range

ITP1_2_B


a,b,c=map(int,input().split())
if a<b and b<c:
    print("Yes")
else:
    print("No")

[Explication] Il n'y a pas de problème même si vous écrivez ʻa <b <c`.

ITP1_2_C Sorting Three Numbers

ITP1_2_C


three_numbers=list(map(int,input().split()))
three_numbers.sort()
print(*three_numbers)

[Explication] list apparaîtra pour la première fois. list est un objet qui contient plusieurs éléments. "[Introduction à Python] Utilisation de la liste et résumé de la méthode" sera utile. Si vous pouvez vous le permettre, vous devriez également étudier tuple and dict. Pour trier une liste, vous pouvez utiliser " nom de la liste ".sort () ou trié (" nom de la liste "). Pour plus d'informations sur ces différences, consultez «Différences entre tri et tri en Python pour le tri des listes».

ITP1_2_D Circle in a Rectangle

ITP1_2_D


W,H,x,y,r = map(int,input().split())
Flag=True
if x+r>W or x-r<0:
    Flag=False
if y+r>H or y-r<0:
    Flag=False
if Flag:
    print("Yes")
else:
    print("No")

[Explication] Vérifiez que les cercles ne s'étendent pas au-delà du rectangle dans les directions horizontale et verticale. Créez un "Flag" et définissez-le sur "False" lorsque les conditions ne sont plus remplies. S'il est "Vrai" jusqu'à la fin, le cercle s'insérera dans un rectangle, sinon il sera vertical ou horizontal. True`` False est appelé type booléen. "[Introduction à Python] Apprenons à utiliser et utiliser Boolean!" sera utile.

ITP1_3_A Print Many Hello World

ITP1_3_A


for i in range(1000):
    print("Hello World")

[Explication] C'est la première fois que le «for» répété apparaît. Ici "[Introduction à Python] Comment écrire des phrases répétées en utilisant des instructions for" sera utile.

ITP1_3_B Print Test Cases

ITP1_3_B


case_number=0
while True:
    x=int(input())
    case_number+=1
    if x==0:
        break
    print("Case {}: {}".format(case_number,x))

[Explication] Exécuter jusqu'à ce que l'entrée devienne «0» avec «while». Pour while, reportez-vous à [" Traitement en boucle par Python instruction while (boucle infinie, etc.) "](https://note.nkmk.me/python- while-usage/). Dans la programmation de compétition, il est souvent affiché comme «Cas i: Résultat». Il existe plusieurs méthodes de sortie en python, dont l'une est format. format est une méthode de chaîne qui vous permet d'incorporer des variables dans une chaîne (disponible uniquement dans Python 2.6 et supérieur). Ici "[Introduction à Python] Comment sortir le contenu des variables avec la méthode format" sera utile.

ITP1_3_C Swapping Two Numbers

ITP1_3_C


while True:
    x,y=map(int,input().split())
    if x==0 and y==0:
        break
    if x>y:
        print(y,x)
    else:
        print(x,y)

[Explication] Exécutez jusqu'à ce que l'entrée devienne «0 0» avec «while». Après cela, vérifiez la relation de grandeur de «x, y» et de la sortie.

ITP1_3_D How Many Divisors?

ITP1_3_D


a,b,c=map(int,input().split())
cnt=0
for k in range(a,b+1):
    if c%k==0:
        cnt+=1
print(cnt)

[Explication] Vérifiez un par un si les nombres entiers de «a» à «b» sont des fractions de «c». S'il s'agit d'une fraction, augmentez cnt (count) de un.

ITP1_4_A A/B Problem

ITP1_4_A


a,b=map(int,input().split())
print(a//b,a%b,"{:.6f}".format(a/b))

ITP1_4_A (une autre solution)


a,b=map(int,input().split())
print(a//b,a%b,round((a/b),6))

[Explication] Le problème est de savoir comment gérer l'erreur fractionnaire de ʻa / b. Vous pouvez spécifier le chiffre décimal d'un nombre en utilisant format`. "Maîtriser la méthode format () de Python" sera utile. Alternativement, il peut être arrondi pour maintenir les erreurs fractionnaires dans les contraintes du problème. Veuillez noter que «rond» n'est pas strictement arrondi. Pour arrondir, reportez-vous à "round and Decimal.quantize rounding fractions and integers with Python".

ITP1_4_C Simple Calculator

ITP1_4_C


while True:
    a,op,b=input().split()
    a=int(a)
    b=int(b)

    if op=="?":
         break
    if op=="+":
        print(a+b)
    if op=="-":
        print(a-b)
    if op=="*":
        print(a*b)
    if op=="/":
        print(a//b)

[Explication] Exécutez jusqu'à ce que «?» Apparaisse avec «while». Après cela, l'addition, la soustraction, la multiplication et la division sont respectivement sorties.

ITP1_4_D Min, Max and Sum

ITP1_4_D


N=int(input())
a=list(map(int,input().split()))
print(min(a),max(a),sum(a))

[Explication] En Python, le maximum, le minimum et le total de liste peuvent être calculés parmax (nom de la liste) `` min (nom de la liste) `` somme (nom de la liste), respectivement.

ITP1_5_A Print a Rectangle

ITP1_5_A


while True:
    H,W= map(int,input().split())
    if H==0 and W==0:
        break
    for i in range(H):
        print("#"*W)
    print()

[Explication] * est répété dans la chaîne de caractères. Par exemple, "" Hello World "* 3devient" "Hello World Hello World Hello World" ". Le finalprint ()` signifie une ligne entre les rectangles.

ITP1_5_B Print a Frame

ITP1_5_B


while True:
    H,W= map(int,input().split())
    if H==0 and W==0:
        break
    print("#"*W)
    for i in range(H-2):
        print("#"+"."*(W-2)+"#")
    print("#"*W)
    print()

[Explication] Similaire au problème précédent. Cependant, les 1ère et H lignes sont `` "### ・ ・ ・ ###" , mais les 2ème à H-1 sont " # ......... # ". Par conséquent, «sortir la première ligne», «sortir la deuxième ligne vers la ligne H-1 (c'est-à-dire la ligne H-2)» et «sortir la ligne H».

ITP1_5_C Print a Chessboard

ITP1_5_C


while True:
    H,W=map(int,input().split())
    if H==0 and W==0:
         break
    for h in range(H):
        for w in range(W):
            if (h+w)%2==0:
                print("#",end="")
            else:
                print(".",end="")
        print()
    print()

[Explication] Vous pouvez écrire for in for. Cela s'appelle une double boucle. (Référence: "rupture de plusieurs boucles (imbriquées pour les boucles) en Python") Si vous regardez attentivement le motif de vérification que vous souhaitez afficher, vous verrez une ligne. Notez que lorsque la somme du nombre et du nombre de colonnes est paire, c'est «#», quand c'est impair, c'est «.» (Notez que dans «Python», cela compte comme ligne 0, ligne 1, etc.). Sorties à tour de rôle sur chaque ligne et saute dans la dernière colonne. Cependant, si vous faites quelque chose comme print (" # "), un saut de ligne se produira après #. Pour éviter cela, utilisez ʻend = "" `pour éviter les sauts de ligne en sortie.

ITP1_5_D Structured Programming

ITP1_5_D


N=int(input())
for i in range(1,N+1):
    if i%3==0 or "3" in str(i):
        print(" {}".format(i),end="")
print()

[Explication] Tout d'abord, comprenez la signification du problème. C'est pénible si vous ne pouvez pas lire le code C ++, mais comme C ++ est souvent utilisé dans l'explication de la programmation compétitive, il peut être bon de le rendre lisible. Par exemple, le code d'un livre communément appelé "Arihon" est écrit en C ++. Dans ce problème, ** "Parmi les nombres naturels inférieurs ou égaux à n, sorties multiples de 3 ou nombres avec 3 dans l'ordre croissant" **. Vous pouvez facilement dire qu'il s'agit d'un multiple de 3 en regardant le reste après avoir divisé par 3. Cette fois, j'ai utilisé «in» comme chaîne de caractères pour confirmer que 3 a été ajouté. Pour déterminer si une chaîne de caractères arbitraire est incluse, "Rechercher une chaîne de caractères avec Python (déterminer si elle contient ~, obtenir la position, compter)" Sera utile.

ITP1_6_A Reversing Numbers

ITP1_6_A


N=int(input())
a=list(map(int,input().split()))
a=a[::-1]
print(*a)

[Explication] Pour inverser l'ordre de la liste, vous pouvez trier par la méthode de type de liste «reverse», la fonction intégrée «inversée» et la tranche. Cette fois, j'ai utilisé des tranches. L'ordre inverse de la liste est "Liste inversée ou chaîne de caractères en Python", mais la tranche est "Liste ou caractère par tranche de Python". "Sélection / substitution partielle des colonnes" sera utile.

ITP1_6_B Finding Missing Cards

ITP1_6_B


N=int(input())
suits=["S","H","C","D"]
cards=[]
for _ in range(N):
    s,n=input().split()
    if s=="S":
        cards.append(int(n))   
    elif s=="H":
        cards.append(13+int(n))   
    elif s=="C":
        cards.append(26+int(n))
    else:
        cards.append(39+int(n))

for i in range(1,53):
    if i not in cards:
        print(suits[(i-1)//13],(i-1)%13+1)

[Explication] Réfléchissons à la manière d'exprimer ensemble la marque Trump et le nombre. Les marques et les nombres peuvent être représentés en même temps en représentant des piques de 1 à 13, des cœurs de 14 à 26, des trèfles de 27 à 39 et des diamants de 40 à 52. Par exemple, 3 du cœur devient 16. Ensuite, dressez une liste des cartes que vous aviez en premier. Après cela, vérifiez si vous avez les numéros de 1 à 52 (c'est-à-dire les 52 cartes à jouer) un par un, et si vous ne l'avez pas, sortez-le.

[Mémo] En fait, il faut être prudent lors de l'utilisation de ʻin pour des problèmes qui nécessitent de prendre en compte la quantité de calcul. Pour le montant du calcul, reportez-vous au ["Résumé de la façon de calculer le montant du calcul! ~ D'où vient le journal ~"](https://qiita.com/drken/items/872ebc3a2b5caaa4a0d0). Vérifier si ʻi est dans liste Le montant du calcul dans ʻi dans la liste est $ O (n) $. Cela signifie que chaque élément de list est vérifié pour voir si ʻi` est égal. Il n'y a pas de problème si le nombre concerne le nombre de cartes à jouer, mais si le nombre est grand, la quantité de calcul peut être énorme, alors soyez prudent.

ITP1_6_C Official House

ITP1_6_C


N=int(input())
room=[[[0]*10 for _ in range(3)] for _ in range(4)]

for _ in range(N):
    b,f,r,v=map(int,input().split())
    room[b-1][f-1][r-1]+=v

for i in range(4):
    for j in range(3):
        for k in range(10):
            print(" {}".format(room[i][j][k]), end="")
        print()
    if i!=3:
        print("####################")

[Explication] Ce problème peut être résolu avec un tableau multidimensionnel. "Comment gérer les tableaux multidimensionnels en Python [pour les débutants]" sera utile. Faire correspondre le format de sortie est un peu un défi.

ITP1_6_D Matrix Vector Multiplication

ITP1_6_D


n,m=map(int,input().split())
A=[list(map(int,input().split())) for i in range(n)]
b=[int(input()) for i in range(m)]
for i in range(n):
    ans=0
    for j in range(m):
        ans+=A[i][j]*b[j]
    print(ans)

[Explication] Ce problème peut également être résolu par un traitement avec un tableau multidimensionnel. Ce sera un calcul matriciel.

ITP1_7_A Grading

ITP1_7_A


while True:
    m,f,r=map(int,input().split())
    if m==-1 and f==-1 and r==-1:
        break
    sum=m+f
    if m==-1 or f==-1 :
        print("F")
    elif sum>=80:
        print("A")
    elif sum>=65:
        print("B")
    elif sum>=50:
        print("C")
    elif sum>=30:
        if r>=50:
            print("C")
        else:
            print("D")
    else:
        print("F")

[Explication] Lisez attentivement le problème et effectuez un branchement conditionnel.

ITP1_7_B How many ways?

ITP1_7_C


while True:
    n,x=map(int,input().split())
    if n==0 and x==0 :
        break
    cnt=0
    for i in range(1,n-1):
        for j in range(i+1,n):
            if j<x-i-j<=n:
                cnt+=1
    print(cnt)

[Explication] C'est un problème qui implique un peu de réflexion mathématique. Pensez à ajouter trois nombres à partir des nombres jusqu'à «n» sans duplication pour faire «x». Par exemple, supposons que vous vouliez créer 9 à partir d'un nombre de 1 à 5. À ce stade, «1 + 3 + 5» et «3 + 5 + 1» sont la même combinaison de nombres, ils sont donc considérés comme la même combinaison. Afin de ne pas compter de telles combinaisons plusieurs fois, nous sélectionnerons sous la règle que "le nombre à sélectionner ensuite est toujours plus grand que le nombre sélectionné avant". Sélectionnez d'abord «i», puis sélectionnez un «j» plus grand. Après cela, si «x-i-j» est supérieur à «j» et inférieur à «n», il est établi comme une combinaison.

ITP1_7_C Spreadsheet

ITP1_7_C


r,c=map(int,input().split())
sheet=[list(map(int,input().split())) for i in range(r)]
for i in range(r):
    sheet[i].append(sum(sheet[i]))
Column_sum=[0]*(c+1)
for j in range(c+1):
    for i in range(r):
        Column_sum[j]+=sheet[i][j]

for i in range(r):
    print(*sheet[i])
print(*Column_sum)

[Explication] Commencez par créer un tableau à deux dimensions de r * c. Trouvez et ajoutez la somme pour chaque ligne et la somme pour chaque colonne. C'est un problème qui peut être résolu en combinant les idées conventionnelles. Cette fois, le total des lignes est "somme", et le total des colonnes est calculé en additionnant le numéro de la jème colonne de chaque ligne par un.

ITP1_7_D Matrix Multiplication

ITP1_7_D


n,m,l=map(int,input().split())
A=[list(map(int,input().split())) for i in range(n)]
B=[list(map(int,input().split())) for i in range(m)]

C=[]
for i in range(n):
    line=[]
    for j in range(l):
        c=0
        for k in range(m):
            c+=A[i][k]*B[k][j]
        line.append(c)
    C.append(line)

for line in C:
    print(*line)

[Explication] Un tableau bidimensionnel est utilisé. Vous devez comprendre et rédiger l'index.

ITP1_8_A Toggling Cases

ITP1_8_A


words=input()
print(str.swapcase(words))

[Explication] Il existe plusieurs méthodes qui peuvent être utilisées pour convertir entre les lettres majuscules et minuscules. Ce problème peut être facilement résolu en utilisant l'un d'eux, «swapcase». Il existe d'autres méthodes que vous devez connaître, telles que «supérieur» et «inférieur». Vous voudrez peut-être lire "Convertir les alphabets Python (supérieur / inférieur / capitalize / swapcase / title)".

ITP1_8_B Sum of Numbers

ITP1_8_B


while True:
    str_n=input()
    if str_n=="0":
        break
    list_n=list(str_n)
    ans=0
    for n in list_n:
        ans+=int(n)
    print(ans)

ITP1_8_Solution alternative B


while True:
    str_n=input()
    if str_n=="0":
        break
    print(sum(list(map(int,str_n))))

[Explication] Cette fois, j'ose recevoir la valeur numérique sous forme de chaîne de caractères. Listez les chaînes. Par exemple, pour la chaîne de caractères "" 123 ", si vous utilisez list (" 123 "), ce sera [" 1 "," 2 "," 3 "]. Après cela, utilisez «pour» pour extraire le numéro de chaque lieu un par un. Cependant, il peut être extrait sous forme de chaîne de caractères, donc convertissez-le en valeur numérique avec ʻint () ʻ et ajoutez-le. Vous pouvez également écrire de manière plus concise en utilisant map`, qui a été utilisée comme entrée standard jusqu'à présent.

ITP1_8_C Counting Characters

ITP1_8_C


import sys
texts=sys.stdin.read()
texts=texts.lower()
cnt=[0]*26

letters=list('abcdefghijklmnopqrstuvwxyz')
for x in texts:
    i=0
    for y in letters:
        if x==y:
            cnt[i]+=1
        i+=1
for i in range(26):
    print(letters[i]+" : "+str(cnt[i]))

[Explication] Jusqu'à présent, l'entrée standard était reçue en utilisant ʻinput. Cette fois, je dois lire une phrase en anglais avec plusieurs lignes et le nombre de lignes est inconnu. Il est possible de combiner while et ʻinput, mais utilisez le module sys sys.stdin.read. Vous pouvez recevoir une chaîne multiligne telle quelle. Pour plus de détails, voir ["Python] Recevoir des données depuis le clavier avec une entrée standard (sys.stdin.readlines, fonction d'entrée)"](https://algorithm.joho.info/programming/python-sys-stdin-readline/#toc3) Prière de se référer à. Après la saisie, rédigez toutes les lettres minuscules, vérifiez l'alphabet une par une en anglais et comptez.

ITP1_8_D Ring

ITP1_8_D


s=input()
p=input()
s*=2
if s.find(p)!=-1:
    print("Yes")
else :
    print("No")

[Explication] Déterminez si vous pouvez créer une certaine chaîne de caractères à partir d'une chaîne de caractères en forme d'anneau. Les chaînes en forme d'anneau n'ont ni début ni fin, et vous pouvez créer une chaîne aussi longue que vous le souhaitez. Cependant, dans ce problème, la condition est que «p» soit plus court que «s». Il suffit donc de penser à deux tours du ring. Créez une chaîne qui correspond aux deux tours de l'anneau et vérifiez si vous pouvez faire un «p» là-bas. Utilisez la méthode de chaîne find pour voir s'il y a un p. find obtient la position d'une chaîne particulière, mais retourne -1 s'il n'y a pas de chaîne. "Rechercher une chaîne de caractères avec Python (déterminer si elle contient ~, obtenir la position, le nombre)" sera utile.

ITP1_9_A Finding a Word

ITP1_9_A


import sys
word=input()
text=sys.stdin.read()
print(text.lower().split().count(word))

[Explication] La saisie se fait avec sys.stdin.read. J'expliquerai à propos de text.lower (). Split (). Count (word). Utilisez lower () pour le réduire. Utilisez split () pour créer une liste séparée par un espace. C'est la même chose que split de ʻinput (). Split ()avec une entrée standard normale. ["Séparer la chaîne de caractères avec Python (séparateur, saut de ligne, expression régulière, nombre de caractères)"](https://note.nkmk.me/python-split-rsplit-splitlines-re/) est utile. Utilisez la méthodecount` pour savoir combien il y en a dans la liste. "[Python] Compter le nombre d'occurrences d'un caractère spécifique ou d'une chaîne de caractères (count)" sera utile.

ITP1_9_B Shuffle

ITP1_9_B


while True:
    cards=input()
    if cards=="-":
        break
    m=int(input())
    for i in range(m):
        sh=int(input())
        former=cards[:sh]
        later=cards[sh:]
        cards=later+former
    print(cards)

[Explication] Il peut être résolu en utilisant des tranches dans la liste.

ITP1_9_C Card Game

ITP1_9_C


n=int(input())
T=0
H=0
for i in range(n):
    card_t,card_h=input().split()
    if card_t==card_h:
        T+=1
        H+=1
    else:
        if card_h>card_t:
            H+=3
        else:
            T+=3
print(T,H)

[Explication] Si vous utilisez > ou < dans la chaîne de caractères, le résultat de la comparaison dans l'ordre lexical sera renvoyé. Vous pouvez l'utiliser pour le résoudre.

ITP1_9_D Transformation

ITP1_9_D


text=input()
n=int(input())
for i in range(n):
    order=input().split()
    a,b=map(int,order[1:3])
    if order[0]=="print":
        print(text[a:b+1])
    elif order[0]=="reverse":
        re_text=text[a:b+1]
        text=text[:a]+re_text[::-1]+text[b+1:]
    else :
        text=text[:a]+order[3]+text[b+1:]

[Explication] Comme précédemment, vous pouvez le résoudre en utilisant des tranches de la liste. Cependant, vous devez être un peu prudent lorsque vous utilisez «reverse». Lors du changement de «step» en «-1» dans une tranche, «start» et «end »ne sont pas interprétés littéralement. Cette Question sera utile. Cette fois, j'ai fait une liste de la plage que je veux «inverser», puis je l'ai fait dans l'ordre inverse.

ITP1_10_A Distance

ITP1_10_A


x1,y1,x2,y2=map(float,input().split())
print(((x1-x2)**2+(y1-y2)**2)**0.5)

[Explication] L'itinéraire peut être calculé en important le module math et en utilisant math.sqrt () ʻou par ** 0.5`.

ITP1_10_B Triangle

ITP1_10_B


import math
a,b,C=map(float,input().split())
θ=math.radians(C)
h=b*math.sin(θ)
S=(a*h)/2
c=math.sqrt(a**2+b**2-2*a*b*math.cos(θ))
L=a+b+c
print(S,L,h,sep="\n")

[Explication] Le rapport triangulaire utilise le module math. La conversion entre le Radian et la méthode de fréquence est "Conversion mutuelle entre le Radian et l'unité de méthode de fréquence", et le rapport trigonométrique est ["Calculez la fonction trigonométrique avec Python (sin, cos). , tan, arcsin, arccos, arctan) "(https://note.nkmk.me/python-math-sin-cos-tan/) sera utile. La longueur de c est calculée par le théorème du cosinus.

ITP1_10_C Standard Deviation

ITP1_10_C


while True:
    n=int(input())
    if n==0:
        break
    score=list(map(int,input().split()))
    mean=sum(score)/n
    var_sum=0
    for i in range(n):
        var_sum+=(score[i]-mean)**2
    print((var_sum/n)**0.5)

[Explication] Les statistiques peuvent être calculées à l'aide de modules tels que «statistiques», mais cette fois, elles seront calculées comme décrit dans l'énoncé du problème. Tout d'abord, calculez la valeur moyenne. Trouvez la moyenne du carré de la différence par rapport à la valeur moyenne. C'est la distribution. Si vous prenez cette route, ce sera l'écart type que vous recherchez cette fois.

ITP1_10_D Distance II

ITP1_10_D


def Distance(X,Y,p):
    s=0
    for x,y in zip(X,Y):
        s+=abs(x-y)**p
    print(s**(1/p))

n=int(input())
X=list(map(int,input().split()))
Y=list(map(int,input().split()))

for p in range(1,4):
    Distance(X,Y,p)
print(max(abs(x-y) for x,y in zip(X,Y)))

[Explication] Jusqu'à présent, nous avons utilisé des bibliothèques existantes, mais vous pouvez également définir vos propres fonctions. Cette fois, nous allons définir une fonction qui affiche la distance «Distance». Pour la définition de la fonction, reportez-vous à "Définir et appeler une fonction en Python (def, return)". Seule la distance de Chebyshev est calculée séparément. La fonction zip est également utile lors de la récupération d'éléments de plusieurs listes. "Comment utiliser Python, fonction zip: Obtenez plusieurs éléments de liste à la fois" est utile.

finalement

Lors de la rédaction du commentaire, j'ai essayé de rendre autant d'informations que possible aussi concises et palpables que possible. J'ai osé résoudre des problèmes qui peuvent être résolus en utilisant plusieurs listes avec un tableau multidimensionnel. Cependant, j'ai essayé de garder une ou deux nouvelles choses par question pour que cela ne devienne pas soudainement difficile. Je suis encore un débutant, mais je pense que c'est un article qui me fait plaisir quand je commence tout juste avec Python. Après "Introduction à la programmation I", "Red Coder vous apprend à améliorer votre concurrence pro / AtCoder" Je pense que vous devriez vous attaquer au problème de la recherche complète tel qu'introduit dans la directive [Débutant: commençons la compétition pro]. Tout en travaillant sur le problème de recherche complète, j'ai également pratiqué la résolution rapide afin de pouvoir résoudre les trois questions A, B et C du concours ABC en 30 minutes au total. J'espère que cela sera utile à tout le monde. Merci d'avoir lu jusqu'au bout.

Recommended Posts

[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 5/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 7/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 4/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part3 / 22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 1/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 6/22]
Examen mathématique précoce de l'Université Tohoku 2020 (sciences) J'ai essayé de résoudre les grandes questions 1 à 3 avec Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter PLSA dans Python 2
Je voulais résoudre ABC160 avec Python
J'ai essayé d'implémenter ADALINE en Python
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
J'ai essayé de résoudre TSP avec QAOA
Je voulais résoudre ABC172 avec Python
[Python] J'ai essayé d'expliquer des mots difficiles à comprendre pour les débutants d'une manière facile à comprendre.
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé de résoudre la recherche de priorité de profondeur (DFS) d'AtCoder en Python (résultat: TLE ...)
Comment écrire en temps réel hors ligne J'ai essayé de résoudre E12 avec python
Je voulais résoudre NOMURA Contest 2020 avec Python
J'ai essayé d'intégrer Keras dans TFv1.1
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
Essayez de calculer RPN avec Python (pour les débutants)
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé d'automatiser la fabrication des sushis avec python
Je veux résoudre APG4b avec Python (chapitre 2)
J'ai essayé d'implémenter le tri sélectif en python
[Introduction pour les débutants] Manipuler MySQL avec Python
J'ai essayé d'implémenter le tri par fusion en Python avec le moins de lignes possible
Python / PEP8> E128 J'ai essayé de résoudre la ligne de continuation sous-indentée pour l'indentation visuelle
[Pour les débutants] Comment utiliser la commande say avec python!
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'ai essayé d'implémenter le poker de Drakue en Python
J'étais accro au grattage avec Selenium (+ Python) en 2020
J'ai essayé d'implémenter le perceptron artificiel avec python
Je veux travailler avec un robot en python.
J'ai essayé d'implémenter GA (algorithme génétique) en Python
J'ai essayé de résumer comment utiliser les pandas de python
[Pour les débutants] Web scraping avec Python "Accédez à l'URL de la page pour obtenir le contenu"
J'ai essayé de créer un environnement d'apprentissage automatique avec Python (Mac OS X)
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python