[PYTHON] ABC174

Nous avons participé au concours AtCorder pour débutants 174. C'était les 3 questions AC d'ABD. J'utilise Python3.

Un problème

Branche conditionnelle avec if.

import sys
def input():
    return sys.stdin.readline()[:-1]


def main():
    s=int(input())
    if s >= 30:
        print("Yes")
    else:
        print("No") 

    
if __name__ == "__main__":
    main()

Problème B

Mettez la valeur au carré du i-ème point et la distance du centre dans la liste L [i]. Que ce soit supérieur au carré de D est déterminé par if.

import sys
def input():
    return sys.stdin.readline()[:-1]


def main():
    N, D = map(int,input().split())
    X = [0] * N
    Y = [0] * N
    L = [0] * N
    ans = 0
    for i in range(N):
        X[i], Y[i] = map(int, input().split())
        L[i] = X[i] ** 2 + Y[i] ** 2
        if L[i] <= D ** 2:
            ans += 1
    print(ans)


    
if __name__ == "__main__":
    main()

Problème C

Trouvez le nombre qui est de 0 $ en divisant la colonne de nombres qui est de 7, 77, 777, ... $ par $ K $. Puisque la séquence de nombres augmente à 70 $, 700, 7000 ... $, elle n'est valide que si $ K $ et $ 10 $ sont premiers l'un par rapport à l'autre. (Parce que cette séquence est un multiple de 7 $, c'est 10 $ au lieu de 70 $)
Premièrement, lorsque K est un multiple de 2 $ ou un multiple de 5 $, le multiple de K n'apparaît pas dans la colonne numérique, nous allons donc classer les cas. Ensuite, créez une séquence de nombres tels que $ 7, 77, 777, ... $, et répétez avec une instruction while jusqu'à ce que le reste après la division par K devienne $ 0 $. $ x = (x + 7 * 10 ** i)% K $ au lieu de $ x = (x * 10 + 7)% K $ Ensuite, il a fallu beaucoup de temps pour calculer 7 $ $ * 10 $ ** $ i $, donc c'est devenu TLE. (Modifié le 04/08/2020) Voici les réponses qui sont devenues AC après la fin du temps.

import sys
def input():
    return sys.stdin.readline()[:-1]


def main():
    K = int(input())
    x = 0
    i = 0
    if K % 2 == 0 or K % 5 ==  0:
        print(-1)
        exit()
    
    while True:
        x = (x * 10 + 7) % K
        i += 1
        if x == 0:
            print(i)
            break


if __name__ == "__main__":
    main()

Problème D

Disposez les N pierres disposées de gauche à droite de manière à ce qu'elles soient R à gauche et W à droite. Si vous lisez l'énoncé du problème, vous trouverez l'opération consistant à échanger deux pierres et l'opération consistant à changer la couleur d'une pierre. Cependant, compte tenu de l'arrangement avec le nombre minimum d'opérations, on constate que seule l'opération d'échange des deux pierres est requise.
Tout d'abord, lisez l'ordre des pierres sous forme de chaîne de caractères et trouvez le nombre w de pierres blanches. Le 0 au wth à partir de la gauche doit être des pierres blanches, alors trouvez le nombre de pierres rouges dans cette plage. Voici le nombre à faire et la réponse.

import sys
def input():
    return sys.stdin.readline()[:-1]


def main():
    N = int(input())
    c = list(input())
    w = c.count("R")
    hidari = c[:w]
    ans = 0
    for i in hidari:
        if i == "W":
            ans += 1
    print(ans)

    
if __name__ == "__main__":
    main()

Recommended Posts

ABC168
ABC164
ABC174
ABC175
ABC170
ABC182
ABC153
ABC146 Impressions
AtCoder ABC176
ABC167 WriteUp
AtCoder ABC177
Débutant ABC156 (Python)
rapport de participation abc154
rapport de participation abc155
AtCoder ABC 174 Python
Débutant ABC155 (Python)
Débutant ABC157 (Python)
AtCoder ABC 175 Python
Atcoder ABC115 Exercice de questions passées
Résolvez ABC169 avec Python
ABC147 C --HonestOrUnkind2 [Python]