AtCoder Beginner Contest 174 C Problème (Python)

La première façon de penser

Faites un nombre de 7 de manière simple et divisez par K pour déterminer s'il devient 0. Puisque K est inférieur à 10 $ ^ 6 $, organisez 7 jusqu'à cette plage. Si vous pensez que 7 est aligné pour 10 $ ^ 6 $, bien sûr TLE

K = int(input())
flg = False
for i in range(10 ** 6):
    n = int('7' * (i + 1))
    if n % K == 0:
        flg = True
        break
    
if flg:
    print(len(str(n)))
else:
    print(-1)

Créé en lisant la solution et le commentaire officiel du dieu compétitif (@tanakh)

Il semble que vous devriez implémenter quelque chose qui coûte cher en calcul. L'écriture ordinaire consiste à ajouter trop de 0 et à continuer le calcul jusqu'à ce qu'il soit divisible (jusqu'à ce que vous en ayez envie), mais à la place, ajoutez 7. Par exemple, $ 10 \ div 8 $ ressemblerait normalement à ceci:


10 \div 8 = 1 \,pas vraiment\, 2 \\
20 \div 8 = 2 \,pas vraiment\, 4 \\
40 \div 8 = 5 \,pas vraiment\, 0 \\
répondre: \,1.25

Cela se fait comme suit.


10 \div 8 = 1 \,pas vraiment\, 2 \\
(20 + 7) \div 8 = 3 \,pas vraiment\, 3 \\
(30 + 7) \div 8 = 4 \,pas vraiment\, 5 \\
...

Quand je l'implémente en Python, cela ressemble à ceci. (Lorsque K = 101 dans l'exemple numérique) C'est rapide car chaque calcul est trop. ~~ Si c'est 10 $ ^ 6 $ fois, c'est acceptable. ~~ (Ajout: D'après le commentaire, il semble que K fois suffit car il ne peut y avoir que K rues en dessous de K. Merci!)

K = 101
cur = 7
for i in range(100):
    mod = cur % K
    print(f'{cur} % {K} = {mod}')
    if mod == 0:
        ans = i + 1
        print(f'Answer: {ans}')
        break
    else:
        cur = mod * 10 + 7

"""
(output)
7 % 101 = 7
77 % 101 = 77
777 % 101 = 70
707 % 101 = 0
Answer: 4
"""

Enfin AC ci-dessous

K = int(input())

cur = 7
flg = False
for i in range(10 ** 6):
    mod = cur % K
    if mod == 0:
        ans = i + 1
        flg = True
        break
    else:
        cur = mod * 10 + 7

if flg:
    print(ans)
else:
    print(-1)

Recommended Posts

AtCoder Beginner Contest 174 C Problème (Python)
AtCoder Beginner Contest # 002 Problème C
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
AtCoder Beginner Contest 166 A Explication du problème "A? C" (Python3, C ++, Java)
AtCoder Beginner Contest 174 B Explication du problème "Distance" (C ++, Python, Java)
AtCoder Beginner Contest 177 B Explication du problème "Sous-chaîne" (Python3, C ++, Java)
AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)
AtCoder Beginner Contest 169 B Problème Explication "Multiplication 2" (Python3, C ++, Java)
AtCoder Regular Contest # 002 Problème C
Concours Atcoder Débutant 152 Kiroku (python)
AtCoder Beginner Contest 170 Un problème Explication des «cinq variables» (C ++, Python, Java)
AtCoder Beginner Contest 169 Explication du problème "Multiplication 1" (Python3, C ++, Java)
AtCoder Beginner Contest 176 A Explication du problème "Takoyaki" (Python3, C ++, Java)
AtCoder Beginner Contest 175 B Explication du problème "Making Triangle" (C ++, Python3, Java)
AtCoder Beginner Contest 175 Explication d'un problème "Saison des pluies" (C ++, Python3, Java)
AtCoder Beginner Contest 176 B Problème Explication "Multiple of 9" (Python3, C ++, Java)
AtCoder Beginner Contest 174 Explication d'un problème "Climatiseur" (C ++, Python, Java)
Concours AtCoder Débutant 177
AtCoder Beginner Contest 177 Explication du problème "Ne soyez pas en retard" (Python3, C ++, Java)
Concours AtCoder Débutant 179
Concours AtCoder Débutant 172
Concours AtCoder Débutant 180
Concours AtCoder Débutant 173
AtCoder Beginner Contest 170 B Problème Explication "Crane and Turtle" (Python3, C ++, Java)
AtCoder Beginner Contest 177 Explication du problème C "Somme des produits de paires" (Python3, C ++, Java)
Concours Atcoder Débutant 153
AtCoder Beginner Contest 165 Un problème Explication "We Love Golf" (Python3, C ++, Java)
AtCoder Beginner Contest 167 B Problème Explication de "Programmation linéaire facile" (Python3, C ++, Java)
Mémo Atcoder débutant Python @ Keyence 2020, problème ABC
Concours pour débutants AtCoder: Réponses aux problèmes D Python
Critique du concours AtCoder Beginner Contest 152
Concours AtCoder Débutant 181 Remarque
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Concours AtCoder Débutant 180 Remarque
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
Concours AtCoder Débutant 182 Remarque
AtCoder Débutant Contest 169 Évaluation
Critique du concours AtCoder Débutant 181
AtCoder Débutant Contest 171 Critique
Critique du concours AtCoder pour débutant 182
Critique du concours AtCoder Débutant 180
Concours AtCoder pour débutants 156 WriteUp
Critique du concours AtCoder pour débutant 177
AtCoder Débutant Contest 168 Critique
Critique du concours AtCoder
Concours AtCoder pour débutants 167
Critique du concours AtCoder pour débutant 172
Concours AtCoder Débutant 183 Remarque
Critique du concours AtCoder
Concours AtCoder Débutant 184 Remarque
Critique du concours AtCoder
Critique du concours AtCoder Beginner Contest 153
AtCoder Débutant Contest 161 Critique
AtCoder Débutant Contest 170 Critique
Critique du concours AtCoder
AtCoder Débutant Contest 173 Critique