解题思路:
Sample Input 1
101
Sample Output 1
4
None of 7, 77, and 777 is a multiple of 101, but 7777 is.
对这个例子分析
先从7尝试对101取余,然后7*10+7 = 77,77对101取余后 乘10 +7 = 777 ,一直到 777 对101取余后,777变为70,70又继续 乘10+7 = 707,在这里对101取余为 0 ,符合 答案为 4 。
我们可以得出规律,k的范围是[1, 1e6],假如该数能被k整除,则x%k==0,若是不能的话余数 乘10+7再%k,直到余数为0,循环终止,如果在循环内,余数一直不为0,则不能被整除。输出 -1
贴一份官方题解思路
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<time.h>
#include<vector>
#define ll long long
using namespace std;
int main()
{
int k;
cin>>k;
ll i = 1;
ll t = 7;
while(i<=1000000){
if(t % k == 0){
cout<<i<<endl;
return 0;
}
t = (t*10+7)%k; //重复取余操作
i++;
}
cout<<"-1"<<endl;
return 0;
}