Problem:


Score : 300 points

Problem Statement

Takahashi loves the number 7 and multiples of K.

Where is the first occurrence of a multiple of K in the sequence 7,77,777,\ldots? (Also see Output and Sample Input/Output below.)

If the sequence contains no multiples of K, print -1 instead.

Constraints

1 \leq K \leq 10^6

K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print an integer representing the position of the first occurrence of a multiple of K. (For example, if the first occurrence is the fourth element of the sequence, print 4.)

Sample Input 1

101

Sample Output 1

4

None of 7, 77, and 777 is a multiple of 101, but 7777 is.

Sample Input 2

2

Sample Output 2

-1

All elements in the sequence are odd numbers; there are no multiples of 2.

Sample Input 3

999983

Sample Output 3

999982



Sample input:
101


Sample output:
4

Submission status: Accepted

Solution code:
import sys
n = int(input())

if n % 2 == 0 or n % 5 == 0:
  print(-1)
  sys.exit()
  
tmp = 7

count = 1
while True:
  if tmp % n == 0:
    print(count)
    sys.exit()

  count += 1
  tmp = tmp * 10 + 7
  tmp %= n

Submission status: Accepted

Solution code:
K = int(input())
if K % 2 == 0:
    print(-1)
else:
    r = 0
    rem = 7
    while (True):
        r += 1
        rem = rem % K
        if rem == 0:
            break
        if r > K:
            r = -1
            break
        rem = (rem * 10) + 7
    print(r)

Submission status: Accepted

Solution code:
from sys import stdin
input = stdin.readline


def main():
  K = int(input())

  if 7 % K == 0:
    print(1)
    return
  if K % 2 == 0:
    print(-1)
    return
  dp = [0]*(10**7)
  const = 7 % K
  dp[0] = const
  ten = 1
  for i in range(1, 10**7):
    ten = ten*10 % K
    new = (7*ten) % K
    dp[i] = (new + dp[i-1]) % K
    if dp[i] % K == 0:
      print(i+1)
      # print(dp[:i+2])
      return

  print(-1)


if(__name__ == '__main__'):
  main()

Submission status: Accepted

Solution code:
k = int(input())
d = 0
t = 0
l = [0] * k
l[0] = 1 % k
for i in range(1, k):
  l[i] = (l[i-1] * 10) % k
for i in range(k):
  t = t + 7 * l[i]
  if t % k == 0:
    print(i + 1)
    exit()
  else:
    t = t % k
print(-1)

Submission status: Accepted

Solution code:
k=int(input())

x=7
if k%2==0 or k%5==0:
    print(-1)
    exit()
for i in range(k):
    y=x%k
    
    if y==0:
        print(i+1)
        exit()
    x=10*y+7

Submission status: Accepted

Solution code:
n = int(input())
x = 7
for i in range(1000000):
    x %= n
    if x==0:
        print(i+1)
        break
    x = x * 10 + 7
else:
    print(-1)

Submission status: Accepted

Solution code:
K = int(input())
if K % 2 == 0 or K % 5 == 0:
    print(-1)
else:
    tmp, i, p = 0, 1, 0
    while True:
        p = (p * 10 + 7) % K
        if not p:
            print(i)
            break
        i += 1

Submission status: Accepted

Solution code:
(K,) = [int(x) for x in input().split()]
ans = 0
seven = 7
for i in range(1000000):
    if seven % K == 0:
        print(i + 1)
        break
    seven = (10 * seven + 7) % K
else:
    print(-1)

Submission status: Accepted

Solution code:
K=int(input())
if K%2==0:
    print(-1)
    exit()
elif K==7:
    print(1)
    exit()
i=0
mod=0
while(i<K):
    mod=(mod+7*pow(10,i,K))%K
    if mod==0:
        print(i+1)
        exit()
    i+=1
print(-1)

Submission status: Accepted

Solution code:
K = int(input())

if 7%K==0:
    print(1)
else:
    ans = 1
    b = 7%K
    while ans < 10**7+1000:
        b = (b*10+7)%K
        if b == 0:
            print(ans+1)
            break
        else:
            ans += 1
    else:
        print(-1)

Submission status: Accepted

Solution code:
K = int(input())

if K % 2 == 0 or K % 5 == 0:
	print(-1)
else:
	n = 1
	m = 0
	d = 7
	while True:
		m = (m + d) % K
		if m == 0:
			break
		if d == 0:
			n = -1
			break
		n += 1
		d = (d * 10) % K
	print(n)

Submission status: Accepted

Solution code:
k = int(input())

mod = 0
for i in range(k):
    mod = (mod * 10 + 7) % k
    if mod == 0:
        print(i + 1)
        exit(0)

print(-1)

Submission status: Accepted

Solution code:
def main():
    K=int(input())
    x=7
    for i in range(1,10**8):
        m=x%K
        #print(m)
        if m==0:
            print(i)
            break
        x=m*10+7
        
    else:
        print(-1)

if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
# coding: utf-8
import sys
#from operator import itemgetter
sysread = sys.stdin.buffer.readline
read = sys.stdin.buffer.read
#from heapq import heappop, heappush
#from collections import defaultdict
sys.setrecursionlimit(10**7)
#import math
#from itertools import product, accumulate, combinations, product
#import bisect
#import numpy as np
#from copy import deepcopy
#from collections import deque

INF = 1 << 50



def run():
    K = int(input())
    left = 7 % K
    right = 1 % K
    next_add = 1
    if not K % 2:
        print(-1)
        return None
    ans = 1
    right_set = set()
    while True:
        if not left * right % K:
            print(ans)
            return None
        else:
            right_set.add(right)
            next_add = next_add * 10 % K
            right = (right + next_add) % K
            ans += 1
            if right in right_set:
                print(-1)
                return

if __name__ == "__main__":
    run()

Submission status: Accepted

Solution code:
k=int(input())
cnt=1
flag=True
if k%2==0:
    flag=False
    print(-1)
else:
    keta=10
    tmp=0
    while cnt<=10**6:
        tmp+=pow(keta,cnt-1,k)*7
        if tmp%k==0:
            print(cnt)
            flag=False
            break
        cnt+=1
if flag:
    print(-1)

Submission status: Accepted

Solution code:
K = int(input())

count = 1
num = 7
if K % 2 == 0 or K % 5 == 0:
    count = -1
else:
    while True:
        if num % K == 0:
            break
        num = (num*10 + 7) % K
        count += 1
        if count >= 10**6 * 10**5:
            count = -1
            break
print(count)

Submission status: Accepted

Solution code:
def main():
    import sys
    import time
    start=time.time()
    K=int(sys.stdin.readline())
    if K%2==0:
        print(-1)
        return

    L=[7%K]
    L2=[7%K]
    if L[0]==0:
        print(1)
        return

    idx=0
    while True:
        L2.append((L2[idx]*10)%K)
        L.append((L[idx]+L2[idx+1])%K)
        if L[-1]==0:
            print(len(L))
            return
        idx+=1

        if time.time()-start>=1.5:
            print(-1)
            return
main()

Submission status: Accepted

Solution code:
k= int(input())
flag= -1
if k%2 ==0 or k%5==0:
    print("-1")
else:
    temp=7
    for i in range(0,k+1):
        if temp%k ==0:
            flag=i
            break
        else:
            temp= (temp*10+7)% k
    if flag==-1:
        print("-1")
    else:
        print(i+1)

Submission status: Accepted

Solution code:
mod = 1000000007
eps = 10**-9


def main():
    import sys
    input = sys.stdin.readline

    K = int(input())
    seen = [0] * K
    d = 0
    for i in range(1, 10**6+1):
        d = (d * 10 + 7) % K
        if d == 0:
            print(i)
            exit()
        if seen[d]:
            break
        seen[d] = 1
    print(-1)


if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
k = int(input())
ml = []
a = 7
m = 7
i = 0
while m>0:
  m = a%k
  a = 10*m+7
  i += 1
  if i>k :
    i=-1
    break
print(i)

Submission status: Accepted

Solution code:
k = int(input())
a = [0,7]
for i in range(2,10**6+1):
    x = a[i-1]*10
    x %= k
    a.append(x)
tnp = 0
for i in range(1,len(a)):
    tnp += a[i]
    tnp %= k
    if (tnp==0):
        print(i)
        exit()
print(-1)

Submission status: Accepted

Solution code:
k=int(input(""))
s=0
a=7%k
for i in range(1,k+1):
    s+=a
    s%=k
    if(s==0):
        print(i)
        break
    a=(10*a)%k
else:
    print(-1)

Submission status: Accepted

Solution code:
k = int(input())

a = 7
ans = 0

for i in range(1000000):
    if a % k == 0:
        ans = i + 1
        break
    a = (a*10 + 7) % k

if ans == 0:
    print("-1")
else:
    print(ans)

Submission status: Accepted

Solution code:
k = int(input())
a = 7 % k
ans = 1
for i in range(k):
    if a != 0:
        a = (10*a + 7) % k
        ans += 1
    else:
        print(ans)
        break
else:
    print(-1)

Submission status: Accepted

Solution code:
K = int(input())

cnt = 0
n = 7
while cnt <= K:
    cnt += 1
    if n % K == 0:
        break
    n = (10 * n + 7) % K

if cnt == K+1:
    print(-1)
else:
    print(cnt)

Submission status: Accepted

Solution code:
k = int(input())
cnt = 0
tmp = 0
while cnt < 1000000:
  tmp += 7 * pow(10, cnt, k)
  cnt += 1
  tmp %= k
  if tmp == 0:
    break
if cnt == 1000000:
  print(-1)
else:
  print(cnt)

Submission status: Accepted

Solution code:
k = int(input())

x = 7
e = 10

for i in range(10000000):
    # print(x)
    if x % k == 0:
        print(i + 1)
        exit()
    x = (x * e + 7) % k

print("-1")

Submission status: Accepted

Solution code:
#!/usr/bin/env python3
import sys
sys.setrecursionlimit(10**8)
def input(): return sys.stdin.readline().strip()
def INT(): return int(input())
def MAP(): return map(int, input().split())
def LIST(): return list(map(int, input().split()))
def ZIP(n): return [LIST() for _ in range(n)]
def NSTR(n): return [input() for _ in range(n)]


INF = float("inf")
MOD = 10**9 + 7


def main():
    K = input()
    if K[-1] not in "1379":
        print(-1)
        return
    K = int(K)

    count = 0
    ans = 7
    for k in range(10**6):
        ans = ans % K
        count += 1
        if ans == 0:
            print(count)
            return
        else:
            ans = ans*10+7
    print(-1)

    return


if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
#!/usr/bin/env python

def main():
    k = int(input())
    flg = [False for _ in range(k)]
    r = 7
    cnt = 0

    while True:
        r = r % k
        cnt += 1
        if r == 0:
            break
        if flg[r]:
            cnt = -1
            break
        flg[r] = True
        r = r*10 + 7

    print(cnt)

if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
K = int(input())
cnt = 7
prev = 7
if K == 1 or K == 7:
    print(1)
    exit()
for i in range(K):
    prev = (prev*10) % K
    cnt += prev
    if cnt % K == 0:
        print(i+2)
        exit()
else:
    print(-1)

Submission status: Accepted

Solution code:
k=int(input())

ans=0
tenmod=1

for i in range(10**8):
  if i>0:
    tenmod=tenmod*10%k
  ans=(ans+7*tenmod)%k
  #print(i,ans)
  if ans==0:
    print(i+1)
    exit()
print(-1)

Submission status: Accepted

Solution code:
K = int(input())
if K%2==0:
    print("-1")
elif K%5==0:
    print("-1")
else:
    ans = 0
    temp = 0
    check = 0
    for i in range(K):
        ans += 1
        temp *= 10
        temp += 7
        temp %= K
        
        if temp==0:
            check+=1
        
        if check==1:
            break
    print(ans)

Submission status: Accepted

Solution code:
def resolve():
    k = int(input())
    ans = 1
    ct = 0
    num = 7
    while ct <= 2*10**6:
        num %= k
        if num == 0:
            print(ans)
            exit()
        else:
            num = (num * 10 + 7)%k
            ans += 1
            ct += 1
    print(-1)
resolve()

Submission status: Accepted

Solution code:
K = int(input())
if(K%2 ==0 or K%5 == 0):
    print("-1")
    exit()
sum = 0
a = 7%K
sum += a
if(a == 0):
    print("1")
    exit()
for i in range(2, 10**8):
    sum += (a*10)%K
    sum = sum%K
    a = (a*10)%K
    if(sum == 0):
        print(i)
        exit()

Submission status: Accepted

Solution code:
K = int(input())
if (K%2==0)or(K%5==0):
  print(-1)
  
else:
  x = 7
  i = 1
  x %= K
  while (x!=0)or(i>=10**7):
    x += (7%K) * pow(10,i,K)
    x %= K
    i += 1
  if i<10**7:  
    print(i)
  else:
    print(-1)

Submission status: Accepted

Solution code:
from functools import reduce
from fractions import gcd
import math
import bisect
import itertools
import sys
input = sys.stdin.readline
INF = float("inf")


# 処理内容
def main():
    K = int(input())

    if K % 2 == 0:
        print(-1)
        return

    tmp = 7
    ans = 1
    while tmp % K != 0:
        tmp = (tmp % K) * 10 + 7
        ans += 1
        if ans >= 10000000:
            print(-1)
            return

    print(ans)

if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
def getN():
    return int(input())
def getNM():
    return map(int, input().split())
def getList():
    return list(map(int, input().split()))
def getArray(intn):
    return [int(input()) for i in range(intn)]
def input():
    return sys.stdin.readline().rstrip()
def rand_N(ran1, ran2):
    return random.randint(ran1, ran2)
def rand_List(ran1, ran2, rantime):
    return [random.randint(ran1, ran2) for i in range(rantime)]
def rand_ints_nodup(ran1, ran2, rantime):
  ns = []
  while len(ns) < rantime:
    n = random.randint(ran1, ran2)
    if not n in ns:
      ns.append(n)
  return sorted(ns)

def rand_query(ran1, ran2, rantime):
  r_query = []
  while len(r_query) < rantime:
    n_q = rand_ints_nodup(ran1, ran2, 2)
    if not n_q in r_query:
      r_query.append(n_q)
  return sorted(r_query)

from collections import defaultdict, deque, Counter
from sys import exit
from decimal import *
import heapq
import math
from fractions import gcd
import random
import string
import copy
from itertools import combinations, permutations, product
from operator import mul, itemgetter
from functools import reduce
from bisect import bisect_left, bisect_right

import sys
sys.setrecursionlimit(1000000000)
mod = 10 ** 9 + 7

#############
# Main Code #
#############

K = getN()
if K == 1 or K == 7:
    print(1)
    exit()

prev1 = 7

cnt = 1
for i in range(10 ** 6 + 2):
    cnt += 1
    mi = (prev1 * 10 + 7) % K
    if mi == 0:
        print(cnt)
        exit()
    prev1 = mi
print(-1)

Submission status: Accepted

Solution code:
k = int(input())
cnt = 1
ans = 7
mul = 70 % k
ans %= k
flags = [False] * k
flags[ans] = True
while ans != 0:
    ans += mul
    cnt += 1
    ans %= k
    mul *= 10
    mul %= k
    if flags[ans]:
        cnt = -1
        break
    flags[ans] = True

print(cnt)

Submission status: Accepted

Solution code:
def main():
    K = int(input())
    if K in [1,7]:
        print(1)
        return
    if K == 2:
        print(-1)
        return
    
    k = 7 % K
    current = k
    count = 1
    foot_print = set()
    while True:
        count += 1
        current = (k + (current * 10)) % K
        if current == 0:
            print(count)
            return
        if current in foot_print:
            break
        foot_print.add(current)

    print(-1)
    

if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
LI = lambda: list(map(int, input().split()))

K = int(input())


def main():
    s = 1
    p = 1
    for i in range(1, K + 1):
        if 7 * s % K == 0:
            print(i)
            return
        p = 10 * p % K
        s = (s + p) % K
    print(-1)


if __name__ == "__main__":
    main()

Submission status: Accepted

Solution code:
K = int(input())
remainder = 0
for i in range(K):
    remainder += 7*(pow(10,i,K))%K
    remainder %= K
    # print(i,remainder)
    if remainder == 0:
        print(i+1)
        break
else:
    print(-1)

Submission status: Accepted

Solution code:
k = int(input())
valM = {}
count = 0
flag = 1
amari = 0
while True:
    count+=1
    amari = (amari*10+7)%k
    if (amari in valM):
        break
    if amari == 0:
        print(count)
        flag = 0
        break
    else:
        valM[amari] = 0
if flag:
    print("-1")

Submission status: Accepted

Solution code:
K = int(input())

ans = 0
num = 0

for _ in range(2*K):
    num = 10*num+7
    num %= K
    ans += 1
    if num == 0:
        break

if ans == 2*K:
    ans = -1
print(ans)

Submission status: Accepted

Solution code:
import sys
input = sys.stdin.readline
from math import gcd


def read():
    K = int(input().strip())
    return K,


def solve(K):
    seven = 0
    for i in range(1, K+1):
        seven = seven * 10 + 7
        seven %= K
        if seven == 0:
            return i
    return -1


if __name__ == '__main__':
    inputs = read()
    outputs = solve(*inputs)
    if outputs is not None:
        print("%s" % str(outputs))

Submission status: Accepted

Solution code:
K = int(input())
A = list()
i = 1
mod = 7%K
while i <= 10**6+5:
    if mod ==0:
        break
    else:
        mod = ((mod*10) + 7)%K
        i += 1
if i >= 10**6+1:
    i = -1
print(i)

Submission status: Accepted

Solution code:
K=int(input())
t=7
for i in range(10**6):
    if t%K==0:
        print(i+1)
        exit()
    t*=10
    t+=7
    t%=K
print(-1)

Submission status: Accepted

Solution code:
import time

start = time.time()
K = int(input())

n = 7
cnt = 1

n %= K

while n:
    n *= 10
    n += 7
    cnt += 1
    n %= K
    if time.time() - start > 1.95:
        print(-1)
        break

else:
    print(cnt)

Submission status: Accepted

Solution code:
MOD = int(input())

if MOD%2 == 0:
  print(-1)
  exit()
if MOD == 7 or MOD == 1:
  print(1)
  exit()
  
def mod(n):         
  return n % MOD

def modpow(a, n):   #mod(a**n)を高速で求める
    res = 1  
    digit = len(str(bin(n))) - 2
    for i in range(digit):
      if (n >> i) & 1:
        res *= mod(a)
        res = mod(res)
      a = mod(a**2)
    return mod(res)
  
res = mod(7)
count = 1

while count <= 10**6:
  res += mod(modpow(10, count)*7)
  res = mod(res)
  count += 1
  if res == 0:
    print(count)
    exit()
    
print(-1)

Submission status: Accepted

Solution code:
k=int(input())
k9=k*9
l=10
for n in range(1,k+5):
    if l*7%k9==7%k9:
        print(n)
        break
    l=l*10%k9
else:
    print(-1)

Submission status: Accepted

Solution code:
def main():
  k = int(input())
  num = 7 % k
  first = num
  ans = 1
  while num != 0:
    ans += 1
    num = (num*10 + 7)%k
    if num == first or ans > 2000000:
      ans = -1
      break
  print(ans)
    
    
if __name__ == "__main__":
  main()

Submission status: Accepted

Solution code:
import sys

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

in_n = lambda: int(readline())
in_nn = lambda: map(int, readline().split())
in_s = lambda: readline().rstrip().decode('utf-8')
in_nl = lambda: list(map(int, readline().split()))
in_nl2 = lambda H: [in_nl() for _ in range(H)]
in_map = lambda: [s == ord('.') for s in readline() if s != ord('\n')]
in_map2 = lambda H: [in_map() for _ in range(H)]
in_all = lambda: map(int, read().split())


def main():

    K = in_n()

    t = 7 % K
    x = 7 % K
    for i in range(10000000):
        if t == 0:
            print(i + 1)
            exit()
        x = (x * 10) % K
        t += x
        t = t % K

    print(-1)


if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
K = int(input())
cur = 7
count = 1
digit = 10
X = K
if X % 2 == 0 or X % 5 == 0 :
    print(-1)
else:
    while cur % K != 0:
        count += 1
        cur += 7*digit
        digit = (digit*10)%K
    print(count)

Submission status: Accepted

Solution code:
import sys
input=sys.stdin.readline

k=int(input())
if k%7==0:
    k=k//7
if k==1:
    now=0
else:
    now=1
s=now
for i in range(k+100):
    if s==0:
        print(i+1)
        sys.exit()
    now=(now*10)%k
    s+=now
    s=s%k
print(-1)

Submission status: Accepted

Solution code:
def main():
    k = int(input())

    a = 0
    for i in range(1, 10 ** 6):
        a = (a * 10 + 7) % k
        if a == 0:
            print(i)
            exit()

    print(-1)


if __name__ == '__main__':
    main()

Submission status: Accepted

Solution code:
def main():
    K = int(input())
    cnt = 1
    now_mod10 = 1
    mod10 = 1
    while cnt <= K:
        md = 7 * now_mod10
        if md % K == 0:
            return cnt
        mod10 = (mod10 * 10) % K
        now_mod10 = (now_mod10 + mod10) % K
        cnt += 1
    return -1

if __name__ == '__main__':
    print(main())

Submission status: Accepted

Solution code:
k = int(input())

ans = 1
used = [False]*k
now = 7%k
pow7 = 7
while not used[now]:
    if now == 0:
        print(ans)
        exit()
    used[now]=True
    pow7 = (pow7*10)%k
    now = (now+pow7)%k
    ans+=1
print(-1)

Submission status: Accepted

Solution code:
from collections import defaultdict

def main():
    k = int(input())
    dic = defaultdict(bool)
    sev = 7
    i = 1
    while(True):
        sev = sev%k
        if sev == 0:
            print(i)
            return
        if(dic[sev]):
            print(-1)
            return
        dic[sev] = True
        sev = (sev + 7*pow(10,i,k))%k
        i += 1

if __name__ == "__main__":
    main()

Submission status: Accepted

Solution code:
k = int(input())

if k % 2 == 0:
    print('-1')
elif k % 5 == 0:
    print('-1')
else:
    n = 7
    ans = 1
    while n % k != 0:
        n = n * 10 + 7
        n %= k
        ans += 1
    
    print(ans)

Submission status: Accepted

Solution code:
k=int(input())
sev=0
for i in range(k):
    sev=(sev+(7*pow(10,i,k)))%k
    if sev==0:
        print(i+1)
        exit()
print(-1)

Submission status: Accepted

Solution code:
from collections import defaultdict, deque, Counter
from heapq import heappush, heappop, heapify
import math
import bisect
import random
from itertools import permutations, accumulate, combinations, product
import sys
import string
from bisect import bisect_left, bisect_right
from math import factorial, ceil, floor
from operator import mul
from functools import reduce


sys.setrecursionlimit(2147483647)
INF = 10 ** 13
def LI(): return list(map(int, sys.stdin.readline().split()))
def I(): return int(sys.stdin.readline())
def LS(): return sys.stdin.readline().rstrip().split()
def S(): return sys.stdin.readline().rstrip()
def IR(n): return [I() for i in range(n)]
def LIR(n): return [LI() for i in range(n)]
def SR(n): return [S() for i in range(n)]
def LSR(n): return [LS() for i in range(n)]
def SRL(n): return [list(S()) for i in range(n)]
def MSRL(n): return [[int(j) for j in list(S())] for i in range(n)]
mod = 998244353


k = I()
now = 0
for i in range(k):
    now = (now * 10 + 7) % k
    if now == 0:
        print(i + 1)
        exit()
print(-1)