A/B
Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 26 Accepted Submission(s) : 22
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)。
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
Output
对应每组数据输出(A/B)%9973。
Sample Input
2 1000 53 87 123456789
Sample Output
7922 6060容易知道n+9973*x=A=By故有式子9973(-x)+By=n#include<stdio.h> __int64 x,y; __int64 gcd(__int64 a,__int64 b) { __int64 t,d; if(b==0) { x=1; y=0; return a; } d=gcd(b,a%b); t=x; x=y; y=t-(a/b)*y; return d; } int main() { __int64 cas,a,b,c,d; __int64 ans; scanf("%I64d",&cas); while(cas--) { a=9973; scanf("%I64d %I64d",&c,&b); d=gcd(a,b); x=-x*(c/d); while(x<0) x+=b/d; ans=((c+9973*x)/b)%9973; printf("%I64d\n",ans); } return 0; }