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