E - Integer Divisibility
If an integer is not divisible by 2 or 5, some multiple of that number in decimal notation is a sequence of only a digit. Now you are given the number and the only allowable digit, you should report the number of digits of such multiple.
For example you have to find a multiple of 3 which contains only 1's. Then the result is 3 because is 111 (3-digit) divisible by 3. Similarly if you are finding some multiple of 7 which contains only 3's then, the result is 6, because 333333 is divisible by 7.
Input
Input starts with an integer T (≤ 300), denoting the number of test cases.
Each case will contain two integers n (0 < n ≤ 106 and n will not be divisible by 2 or 5) and the allowable digit (1 ≤ digit ≤ 9).
Output
For each case, print the case number and the number of digits of such multiple. If several solutions are there; report the minimum one.
Sample Input
3
3 1
7 3
9901 1
Sample Output
Case 1: 3
Case 2: 6
Case 3: 12
同余定理就是 比如a ,b c三个数 a-b的值对C取余是一个整数;
例如 100-60 对8 40对8取余等于整数,并且 100 和60对8取余 的结果相同,就说 100和60 对8 同余;
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main ()
{
int T;
long long n,dight;
int k = 1,ans;
scanf("%d",&T);
int h = 0; //这是Case的那个变量
while(T--)
{
int k = 1;
h++; //case 让他每次循环都+1;
scanf("%lld%lld",&n,&dight);
ans = dight%n; //先取余 可能dight小于n;
while(ans%n!=0)
{ // 这里只要这个while里不是0,就一直循环 循环的时候就会多层的 * 10+dight
ans = (ans*10+dight)%n; // 同余定理公式
k++; //要输出的 位数
}
printf("Case %d: %d\n",h,k);
}
return 0;
}