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

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#include "bits/stdc++.h"
using namespace std;
#define int long long
#define double long double
#define endl '\n'
#define vi vector<int>
#define vvi vector<vi>
#define vpii vector<pii>
#define vpipii vector<pipii>
#define vpiipi vector<piipi>
#define pb push_back
#define pob pop_back
#define pii pair<int,int>
#define pipii pair<int,pii>
#define piipi pair<pii,int>
#define pld pair<long double,long double>
#define mod 1000000007
// #define mod 1000000009
// #define mod 163577857 
// #define mod 998244353
#define rep(i,n) for (int i = 0; i < n; i++)
#define repp(i,a,b) for(int i = a ; i<b ; i++)
#define reppr(i,a,b) for(int i = a-1 ; i>=b ; i--)
#define repr(i,n) for (int i = n - 1; i >= 0; i--)
#define ff first
#define ss second
#define pc putchar_unlocked
#define gc getchar_unlocked
#define inf 9223372036854775807
#define infn -9223372036854775807
#define pi 3.14159265358979323846
#define eps 0.0000000001
#define sp << " " <<
#define setprec(x) cout << fixed << setprecision(x);
#define REVERSE(a) reverse(all(a));
#define SORT(a) sort(all(a));
#define all(n) n.begin(),n.end()
//GCD and LCM
    int gcd (int a, int b) { return b ? gcd (b, a % b) : a; }
    int lcm (int a, int b) { return a / gcd(a, b) * b; }
 
//Modular Exponentiation
    int powmod(int x,int y) 
    { 
        if (y == 0) return 1; 
        int p = powmod(x, y/2) % mod; 
        p = (p * p) % mod;   
        return (y%2 == 0)? p : (x * p) % mod; 
    }
 
//Modular Inverse
    int inverse(int a) 
    { 
       return powmod(a,mod-2); 
    }

//Binomial Coefficients
    const int limbin = 500001;
    int fact[limbin], factinv[limbin] , coefficientflag = 0;
    void Util_nCr()
    {
        fact[0] = 1 , factinv[0] = 1;
        repp(i,1,limbin)
        {
            fact[i] = (fact[i-1] * i)%mod;
            factinv[i] = (factinv[i-1] * inverse(i))%mod;
        }
    }
    int nCr(int n , int r)
    {
        if(!coefficientflag) coefficientflag = 1 , Util_nCr();
        if(n<r) return 0;             
        return ((fact[n] * inverse(fact[n-r]) % mod * inverse(fact[r]))%mod) ;
    }

// STRING HASHING
    int hprime = 31 , hmod = 1000000009;
    int stringhash(string s)
    {
        int res = 0;
        for(auto i : s)
            res = (res*hprime%hmod + (i-'a'))%hmod;
        return res;
    }
    vector<int> hashoflen(string s, int k)
    {
        int l = s.length();
        vector<int> ans(l-k + 1);
        ans[0] = stringhash(s.substr(0,k));
        int hell = 1 , tm = k - 1;
        while(tm--) hell = (hell*hprime)%hmod;
        for(int i = k ; i < l ; i++)
            ans[i-k+1] = ((ans[i-k] - hell*(s[i-k]-'a')%hmod + hmod)%hmod*hprime%hmod + (s[i]-'a'))%mod;
        return ans;
    }
    vector<int> prefixhash(string s)
    {
        int l = s.length();
        vector<int> hash(l+1);
        hash[0] = 0;
        rep(i,l)
            hash[i+1] = (hash[i]*hprime%hmod + (s[i]-'a'))%hmod;
        return hash;
    }
    vector<int> suffixhash(string s)
    {
        int l = s.length();
        vector<int> hash(l+1);
        hash[0] = 0;
        int pprime = 1;
        rep(i,l)
            hash[i+1] = (hash[i] + (s[l-i-1]-'a')*pprime%hmod)%hmod , pprime %= hmod;;
        return hash
;    }
    

void solve();
signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    //   #ifndef ONLINE_JUDGE
    //     freopen("input.txt", "r", stdin);
    //     freopen("output.txt", "w", stdout);
    // #endif
    int t = 1;
    // cin >> t; 
    rep(i,t)
    {
        // cout< < "Case #" << i+1 << ": ";
        solve();
    }
}

void solve()
{
	int k , num = 0 , pw = 1 , ans = 0;
	cin >> k;
	rep(i,k)
	{
		ans++;
		num = (num+7*pw)%k;
		pw = pw*10%k;
		if(!num){
			cout << ans;
			return;
		}
	}
	cout << -1;
}

/* TERMINAL COMMANDS : 

    g++ file.cpp
    ./a.out < input.txt > output.txt
    time ./a.out ( TIME TAKEN )

*/