A/B 数论 逆元 待补完

来源:互联网 发布:知水牌富氢水杯的价格 编辑:程序博客网 时间:2024/05/22 06:07

A/B

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 5078    Accepted Submission(s): 3936


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
21000 5387 123456789
 

Sample Output
79226060
 

Author
xhd
 

Source
HDU 2007-1 Programming Contest



/* ━━━━━┒ ┓┏┓┏┓┃μ'sic foever!! ┛┗┛┗┛┃\○/ ┓┏┓┏┓┃ / ┛┗┛┗┛┃ノ) ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┛┗┛┗┛┃ ┓┏┓┏┓┃ ┃┃┃┃┃┃ ┻┻┻┻┻┻ */#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>using namespace std;const int mod = 9973;void gcd_more(long long a,long long b,long long &x,long long &y){//d is gcd(a,b)    if(!b){        //d=a;        x=1;        y=0;    }else{        gcd_more(b,a%b,y,x);        y=y-x*(a/b);    }}int main(){    int t;    long long n,b,x,y;    scanf("%d",&t);    while(t--){        scanf("%lld%lld",&n,&b);        gcd_more(b, mod, x, y);        x = (x%mod+mod)%mod;        x = (x*n)%mod;        printf("%lld\n",x);    }    return 0;}







0 0
原创粉丝点击