• hdu 1576 A/B 拓展欧几里得算法


    A/B

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


    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
     
    Author
    xhd
     
      对于拓欧我用的一点也不熟练,特别是限制解必须为正数时,而本题规定了b,9973互质,直接取模至正数,还变简单了。
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    typedef long long qword;
    qword ext_gcd(qword a,qword b,qword &x,qword &y)
    {
            if (a%b==0)
            {
                    //a*x+b*y==b
                    x=0;y=1;
                    return y;
            }
            qword ret=ext_gcd(b,a%b,x,y);
            qword tx=x,ty=y;
            x=ty;
            y=tx-a/b*ty;
            return ret;
    }
    int main()
    {
            //freopen("input.txt","r",stdin);
            //A=9973*x+n
            //(9973*x+n)=y*B
            //9973*x-B*y==-n
            qword n,a,b,x,y,yy,xx;
            int nn;
            scanf("%d",&nn);
            qword g;
            while (nn--)
            {
                    scanf("%I64d%I64d",&n,&b);
                    g=ext_gcd(9973,b,x,y);
                    x*=-n;y*=n;
                //    cout<<9973*x-b*y<<endl;
                    yy=(y%9973+9973)%9973;
                    xx=x-(y-yy)/9973*b;
                //    cout<<9973*xx-b*yy<<endl;
                    cout<<yy<<endl;
            }
    }
    by mhy12345(http://www.cnblogs.com/mhy12345/) 未经允许请勿转载

    本博客已停用,新博客地址:http://mhy12345.xyz

  • 相关阅读:
    路径
    JSTL-3
    JSTL-2
    JSTL-1
    EL和JSTL的关系
    Mybatis控制台打印SQL语句的两种方式
    centOS7安装JDK
    centOS7下安装GUI图形界面
    centOS7配置IP地址
    Office2016专业增强版永久激活
  • 原文地址:https://www.cnblogs.com/mhy12345/p/4057678.html
Copyright © 2020-2023  润新知