nyoj 1235 A/B Problem
A/B Problem
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
已知:
1. n = (A % 9973);
2. gcd(B, 9973) = 1;
计算:
(A / B) % 9973
输入
数据的第一行是一个T,表示有T组数据.
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9).
输出
对应每组数据输出(A / B) % 9973.
样例输入
2
1000 53
87 123456789
样例输出
7922
6060
#include<string.h>
#include<stdio.h>
#define INF 0x3fffffff
long long x,y;
long long extend_gcd(long long a,long long b,long long &x,long long &y)
{
if(a==0&&b==0)return -1;
if(b==0)
{
x=1;y=0;
return a;
}
long long d=extend_gcd(b,a%b,y,x);
y-=x*(a/b);
return d;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,b;
int m=9973;
long long b1;
scanf("%d %d",&n,&b);
long long gcd=extend_gcd(b,m,x,y);
if(gcd==1)
b1=(x%m+m)%m;
else
b1=-1;
printf("%lld\n",(n*b1)%m);
}
return 0;
}

浙公网安备 33010602011771号