zoukankan      html  css  js  c++  java
  • hdu1576(扩展gcd求乘法逆元)

    A/B

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


    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<cstdio>
    
    long long exgcd(long long a,long long b,long long &x,long long &y)
    {
        if(b==0)
        {
            x=1;
            y=0;
            return a;
        }
        long long r=exgcd(b,a%b,x,y);
        long long t=x;
        x=y;
        y=t-a/b*y;
        return r;
    }
    int main()
    {
        int T;
        long long N,B,p=9973;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%lld%lld",&N,&B);
            long long x,y;
            long long r=exgcd(B,p,x,y);
            printf("%lld
    ",N*((x%p+p)%p)%p);
        }
        return 0;
    }
    View Code
     
     
  • 相关阅读:
    <cf>Square
    运算符重载
    HDU 1231 最大连续子序列
    Biorhythms(poj1006)
    友元和友元函数
    <poj 1046>Color Me Less
    <cf> Funky Numbers
    VC++中窗口的最大化问题
    励志文章,没事看一下(网上摘录)
    VC多线程编程(转)
  • 原文地址:https://www.cnblogs.com/ACRykl/p/8735320.html
Copyright © 2011-2022 走看看