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
print("Hello World")
[Explication] print
affiche Hello World
.
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
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
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
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
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
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
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=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
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
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
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 final
print ()` signifie une ligne entre les rectangles.
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
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
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
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
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_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
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
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
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
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
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
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éthode
count` 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
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
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
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
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
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
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
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.
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