Nous avons participé à AtCoder Beginner Contest 171. J'ai pu résoudre les problèmes A à C. J'écrirai mes pensées à ce moment-là.
A - Rainy Season Renvoie le nombre de R consécutifs à partir d'une chaîne de caractères de longueur 3. Je l'ai poussé.
S = input()
if 'RRR' in S:
print(3)
elif 'RR' in S:
print(2)
elif 'R' in S:
print(1)
else:
print(0)
B - Making Triangle Compte tenu de la liste de longueur L de N tiges. Sélectionnez trois d'entre eux et renvoyez le nombre de combinaisons qui remplissent les conditions.
J'ai regardé autour des combinaisons et utilisé itertools.combinations pour cela. Pour savoir comment l'utiliser pendant la compétition ... itertools.combinations(N,r) Renvoie une liste de r combinaisons à choisir dans la liste N. Exemple: combinaisons (range (5), 3) → (0,1,2), (0,1,3), (0,1,4), (0,2,3), (0,2,4 ), (0,3,4), (1,2,3), (1,2,4), (1,3,4), (2,3,4)
import itertools
N = int(input())
L = list(map(int, input().split()))
count = 0
for i in itertools.combinations(range(N), 3):
Lx = sorted([L[i[0]], L[i[1]], L[i[2]]])
if not (Lx[0] == Lx[1] or Lx[1] == Lx[2] or Lx[2] == Lx[0]):
if Lx[0] + Lx[1] > Lx[2] :
count += 1
print(count)
C - Walking Takahashi $ X, K et D $ sont respectivement la position initiale, le nombre de mouvements et la distance parcourue. La direction du mouvement peut être sélectionnée entre positive ou négative et est la plus proche de 0.
Soit $ i $ le nombre de coups positifs et la position finale $ d $
X + iD - \left((K-i)D\right) = d\\
X/D + (2i - K) = d/D\\
\frac{X/D - K}{2} + i = d/2D\\
La valeur absolue de $ d $ est proche de 0 $ $ ⇒ $ \ frac {X / D --K} {2} + i ; (i = 0,1, \ ldots, K) Trouvez $ i $ où $ est le plus proche de $ 0 $. ⇒ Mettez $ \ frac {X / D-K} {2} = {\ rm dist} $
if dist > 0
⇒ i = 0
else if dist + K < 0
⇒ i = K
else
⇒ i = -round(dist)
Rencontrer
X, K, D = list(map(int, input().split()))
dist= (X/D-K)/2
if -dist > K :
i = K
elif dist > 0 :
i = 0
else :
i = -round(dist)
print(abs(X + i*D - ((K-i)*D)))
Je ne l'ai pas fait depuis le problème D ...
Recommended Posts