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;
}


posted @ 2016-11-23 22:11  see_you_later  阅读(117)  评论(0编辑  收藏  举报