AtCoder Anfängerwettbewerb 174 C Problem (Python)

Der erste Weg zu denken

Machen Sie auf einfache Weise eine Zahl von 7s und dividieren Sie durch K, um festzustellen, ob sie 0 wird. Da K kleiner als $ 10 ^ 6 $ ist, ordnen Sie 7 bis zu diesem Bereich an. Wenn Sie denken, dass 7s für $ 10 ^ 6 $ anstehen, dann natürlich 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)

Erstellt durch Lesen der Lösung und des offiziellen Kommentars des Wettbewerbsgottes (@tanakh)

Es scheint, dass Sie etwas implementieren sollten, das rechenintensiv ist. Gewöhnliches Schreiben besteht darin, 0 zu viel zu addieren und die Berechnung fortzusetzen, bis sie teilbar ist (bis Sie Lust dazu haben), aber stattdessen 7 zu addieren. Zum Beispiel würde $ 10 \ div 8 $ normalerweise so aussehen:


10 \div 8 = 1 \,nicht wirklich\, 2 \\
20 \div 8 = 2 \,nicht wirklich\, 4 \\
40 \div 8 = 5 \,nicht wirklich\, 0 \\
Antworten: \,1.25

Dies geschieht wie folgt.


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

Wenn ich es in Python implementiere, sieht es so aus. (Wenn K = 101 im numerischen Beispiel) Es ist schnell, weil jede Berechnung zu viel ist. ~~ Wenn es $ 10 ^ 6 $ mal ist, ist es akzeptabel. ~~ (Ergänzung: Aus dem Kommentar geht hervor, dass K-mal ausreicht, da es unter K nur K Straßen geben kann. Danke!)

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
"""

Endlich AC unten

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 Anfängerwettbewerb 174 C Problem (Python)
AtCoder Beginner Contest # 002 C Problem
AtCoder Anfängerwettbewerb 176 C Problem "Schritt" Erklärung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 166 A Erklärung des Problems "A? C" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 B Problem "Entfernung" Erklärung (C ++, Python, Java)
AtCoder-Anfängerwettbewerb 177 B Problem "Teilzeichenfolge" Erläuterung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 167 Ein Problem "Registrierung" Erklärung (Python3, C ++, Java)
AtCoder-Anfängerwettbewerb 169 B Problem "Multiplikation 2" Erläuterung (Python3, C ++, Java)
AtCoder Regular Contest # 002 C Problem
Atcoder Anfänger Wettbewerb 152 Kiroku (Python)
AtCoder Anfängerwettbewerb 170 Ein Problem "Fünf Variablen" Erklärung (C ++, Python, Java)
AtCoder Beginner Contest 169 Eine Erklärung des Problems "Multiplikation 1" (Python3, C ++, Java)
AtCoder Beginner Contest 176 Eine Erklärung des Problems "Takoyaki" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 175 B Problem "Making Triangle" Erklärung (C ++, Python3, Java)
AtCoder Anfängerwettbewerb 175 Ein Problem "Regenzeit" Erklärung (C ++, Python3, Java)
AtCoder-Anfängerwettbewerb 176 B Problem "Multiple of 9" Erläuterung (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 Ein Problem "Klimaanlage" Erklärung (C ++, Python, Java)
AtCoder Anfängerwettbewerb 177
AtCoder Anfängerwettbewerb 177 Eine Erklärung des Problems "Sei nicht zu spät" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 179
AtCoder Anfängerwettbewerb 172
AtCoder Anfängerwettbewerb 180
AtCoder Anfängerwettbewerb 173
AtCoder Anfängerwettbewerb 170 B Problem "Crane and Turtle" Erklärung (Python3, C ++, Java)
AtCoder Beginner Contest 177 Erklärung des C-Problems "Summe der Produktpaare" (Python3, C ++, Java)
Atcoder Anfänger Wettbewerb 153
AtCoder Anfängerwettbewerb 165 Ein Problem "Wir lieben Golf" Erklärung (Python3, C ++, Java)
AtCoder-Anfängerwettbewerb 167 B Problem "Einfache lineare Programmierung" Erläuterung (Python3, C ++, Java)
Python-Anfänger Atcoder memo @ Keyence 2020, ABC-Problem
AtCoder Anfängerwettbewerb: D Problemantworten Python
AtCoder Anfängerwettbewerb 152 Rückblick
AtCoder Anfängerwettbewerb 181 Hinweis
AtCoder Beginner Contest 160 Bewertung
AtCoder Anfängerwettbewerb 178 Bewertung
AtCoder Anfängerwettbewerb 180 Hinweis
AtCoder Anfängerwettbewerb 166 Bewertung
AtCoder Anfängerwettbewerb 167 Bewertung
AtCoder Anfängerwettbewerb 182 Hinweis
AtCoder Beginner Contest 169 Bewertung
AtCoder Beginner Contest 181 Bewertung
AtCoder Beginner Contest 171 Bewertung
AtCoder Beginner Contest 182 Bewertung
AtCoder Beginner Contest 180 Bewertung
AtCoder Anfängerwettbewerb 156 WriteUp
AtCoder Anfängerwettbewerb 177 Rückblick
AtCoder Anfängerwettbewerb 168 Bewertung
AtCoder Beginner Contest 179 Bewertung
AtCoder Beginner Contest 167 Memorandum
AtCoder Beginner Contest 172 Bewertung
AtCoder Anfängerwettbewerb 183 Hinweis
AtCoder Anfängerwettbewerb 176 Bewertung
AtCoder Anfängerwettbewerb 184 Hinweis
AtCoder Anfängerwettbewerb 174 Bewertung
AtCoder Beginner Contest 153 Bewertung
AtCoder Beginner Contest 161 Bewertung
AtCoder Beginner Contest 170 Bewertung
AtCoder Beginner Contest 165 Bewertung
AtCoder Beginner Contest 173 Bewertung