A/B

Problem Description
要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973) = 1)。
 
Input
数据的第一行是一个T,表示有T组数据。 每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
 
Output
对应每组数据输出(A/B)%9973。
 
Sample Input
2 1000 53 87 123456789
 
Sample Output
7922 6060
 
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cmath>
using namespace std;
int
x,y,d;
void
exp_gcd(int a,int b)
{

    int
temp;
    if
(b==0)
    {

        x=1;
        y=0;
        d=a;//可以不要
   
    }

    else

    {

        exp_gcd(b,a%b);
        temp=x;
        x=y;
        y=temp-(a/b)*y;
    }
}

int
main()
{

    int
t,b,n;
    scanf("%d",&t);
    while
(t--)
    {

        scanf("%d%d",&n,&b);
        exp_gcd(9973,b);
        while
(y<=0)
            y=(9973+y%9973)%9973;//最小正整解
        printf("%d\n",(n%9973*y%9973)%9973);
    }

    return
0;
}
posted @ 2012-07-24 10:37  myth_HG  阅读(334)  评论(0编辑  收藏  举报