lightoj 1078【同余定理】

时间:2023-03-09 17:30:17
lightoj 1078【同余定理】

题意:

给你一个n和一个数 digit ,问你最少需要多少个 digit 使得整除于n;

思路:

同余定理(a+b)%n=(a%n+b%n)%n;

(m%n+m%n*10+m%n*100+m%n*1000......)%n==0;

temp=m%n;

temp=(temp*10+m)%n=(10*m%n+m%n)%n;

temp=(temp*10+m)%n=(10*10*m%n+10*m%n+m)%n;

if(temp==0)

满足;

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main()
{
int T,cas=1;
int n,m,cnt,temp;
scanf("%d",&T); while(T--)
{
cnt=1;
scanf("%d%d",&n,&m);
temp=m%n;
while(temp)
{
temp=(temp*10+m)%n;
cnt++;
}
printf("Case %d: %d\n",cas++,cnt);
}
return 0;
}