[PYTHON] J'ai participé à AtCoder (ABC158)

salut! C'est le domaine de Roadrice, étudiant en master de bioinformatique! En fait, j'ai participé à AtCoder en tant que passe-temps, mais si j'ai du temps à partir de cette époque, je garderai une trace pour mon examen! C'est un record quand j'ai participé à ABC158 qui s'est tenu le 7 mars 2020. Je ne pouvais que AC jusqu'à D problème par manque d'étude, mais je ferai de mon mieux pour pouvoir AC jusqu'à E dans le futur! J'utilise aussi habituellement C ++, mais cette fois, il me semblait que Python suffirait, alors j'ai tout résolu avec Python!

Problème A

Au début, je ne pouvais pas saisir l'intention de l'énoncé du problème, et j'ai fini par demander "Quoi?", Mais si vous y réfléchissez, il vous suffit de juger si la chaîne de caractères * S * est composée uniquement des mêmes caractères. est.

Ma réponse

S = input()
if S[0] == S[1] and S[1] == S[2] and S[0] == S[2]: print("No")
else: print("Yes")

Problème B

Après tout, Takahashi ne met que * A * balles bleues et * B * balles rouges périodiquement, donc il y a * (A + B) * ensembles de l'avant à * N *. Tout d'abord, trouvez le quotient × * A *. S'il est supérieur à * A *, ajoutez-y * A *, et s'il est inférieur à * A *, ajoutez-en trop. Est la réponse.

Ma réponse

N, A, B = map(int, input().split())
 
div = int(N/(A+B))
 
amari = N%(A+B)
 
if amari > A:
    print(A*div + A)
else:
    print(A*div + amari)

Problème C

J'étais impatient parce que je ne pouvais pas penser à une politique tout de suite, mais quand je réfléchis calmement, le prix minimum hors taxe auquel la taxe à la consommation est de * A * yen au taux de la taxe à la consommation de 8% est ceil (* A * / 0.08) = ceil. (12,5 * A ) Yen. Le prix minimum hors taxe pour lequel la taxe à la consommation est de * B * Yen au taux de la taxe à la consommation de 10% est ceil ( B * / 0,1) = ceil (10 * B *) Yen. Le plus petit est * N *. Par exemple, le prix minimum hors taxe auquel la taxe à la consommation est de * A * yen au taux de taxe à la consommation de 8%, ceil (12,5 * A *) yen est supposé être plus petit. * N * = ceil (12,5 * A *), et * N * plus 1 pour obtenir le premier étage (0,1 * N *) = * B * est la réponse. * N * est 1 Étant donné que le plancher (0,08 * N *) peut devenir supérieur à * A * au milieu de l'addition, -1 est émis car il n'y a pas de réponse à ce moment-là. En Python, si vous le placez dans int (), il devient un étage. C'est compliqué! !! !! Et comment écrivez-vous les symboles du plafond et du sol dans Markdown ... Quelqu'un peut-il me le dire!

Ma réponse

import math
A, B = map(int, input().split())
ans = -1
 
flg = True
 
if math.ceil(12.5*A) >= B*10:
    N = B*10
    while int(N*0.08) < A:
        N += 1
        if int(N*0.1) > B:
            flg = False
            break
    if flg: ans = N
 
else:
    N = math.ceil(12.5*A)
    while int(N*0.1) < B:
        N += 1
        if int(N*0.08) > A:
            flg = False
            break
    if flg: ans = N
 
print(ans)

Problème D

En effet, si vous implémentez l'opération de la phrase de question telle quelle, il faut beaucoup de temps pour inverser le caractère ou ajouter le caractère au début, et selon le cas de test, la réponse ne peut pas être sortie dans les 2 secondes. Lors de l'ajout, l'opération pour décaler l'indice du tableau qui contient la chaîne de caractères un par un aurait dû être effectuée. Cela devrait donc être lent.) Donc ici tout en maintenant si la chaîne de caractères est maintenant inversée ** ajoutez ** les caractères qui suivent la tête et la queue de * S * lorsqu'ils sont visualisés dans l'orientation d'origine vers des listes séparées (important ici! L'ajout par ajout n'est ajouté qu'à la fin de la liste, donc Le temps est court.) Enfin, je suis allé avec la stratégie de prêter attention à la direction et à la connexion et à la sortie.

Ma réponse


S = input()
Q = int(input())
 
flg = "moto"
 
atama = list()
shippo = list()
 
for _ in range(Q):
    tmp = list(map(str, input().split()))
    if flg == "moto":
        if int(tmp[0]) == 1:
            flg = "hanten"
        else:
            if int(tmp[1]) == 1:
                atama.append(tmp[2])
            else:
                shippo.append(tmp[2])
    
    else:
        if int(tmp[0]) == 1:
            flg = "moto"
        else:
            if int(tmp[1]) == 1:
                shippo.append(tmp[2])
            else:
                atama.append(tmp[2])
 
if flg == "moto":
    atama = atama[::-1]
    print("".join(atama) + S + "".join(shippo))
 
else:
    shippo = shippo[::-1]
    print("".join(shippo) + S[::-1] + "".join(atama))

Impressions

C'est tout ce que j'ai résolu.Dès maintenant, je vise à apprendre les algorithmes de base tels que DP et AC jusqu'à E problèmes! Je pense qu'il a fait de son mieux pour le Département des sciences biologiques.

Recommended Posts

J'ai participé à AtCoder (ABC158)
J'ai participé à AtCoder (édition ABC169)
Atcoder ABC165 A-D en Python
Atcoder ABC166 A-E en Python
Atcoder ABC169 A-E en Python
AtCoder ABC177 A-D avec python
AtCoder ABC176
AtCoder ABC177
J'ai participé au tour de qualification ISUCON10!
Résoudre Atcoder ABC169 A-D avec Python
J'ai participé au PyData Tokyo Meetup # 2
AtCoder ABC 174 Python
Je voulais résoudre ABC159 avec Python
AtCoder ABC 175 Python
AtCoder # 36 quotidien avec Python
Daily AtCoder # 32 en Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Daily AtCoder # 53 en Python
AtCoder # 7 tous les jours avec Python
AtCoder # 24 tous les jours avec Python
Daily AtCoder # 37 en Python
AtCoder # 8 tous les jours avec Python
Daily AtCoder # 42 en Python
AtCoder # 21 quotidien avec Python
Daily AtCoder # 17 avec Python
Daily AtCoder # 38 en Python
Daily AtCoder # 54 en Python
Daily AtCoder # 11 en Python
Daily AtCoder # 15 en Python
Daily AtCoder # 13 en Python
AtCoder # 45 quotidien avec Python
AtCoder # 30 tous les jours en Python
AtCoder # 40 quotidien avec Python
AtCoder # 10 quotidien avec Python
AtCoder # 5 tous les jours avec Python
Daily AtCoder # 28 en Python
AtCoder # 39 quotidien avec Python
Atcoder ABC115 Exercice de questions passées
Daily AtCoder # 20 en Python
Daily AtCoder # 19 en Python
Daily AtCoder # 52 en Python
Daily AtCoder # 3 en Python
Daily AtCoder # 14 avec Python
Daily AtCoder # 50 avec Python
Daily AtCoder # 26 avec Python
AtCoder quotidien # 4 avec Python
Daily AtCoder # 43 en Python
Daily AtCoder # 29 en Python
Tous les jours avec Python AtCoder # 22
Daily AtCoder # 49 en Python
Daily AtCoder # 27 en Python
AtCoder # 1 tous les jours avec Python
Résolvez ABC169 avec Python
Daily AtCoder # 25 avec Python
Daily AtCoder # 16 en Python
Daily AtCoder # 12 en Python
Daily AtCoder # 48 en Python
Daily AtCoder # 34 en Python