zoukankan      html  css  js  c++  java
  • HDU1576(扩展欧几里得)

    A/B

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


    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
     
    思路:设(A/B)%9973=x,则A/B=9973*k+x. 因为B整除A,则A=9973*k*B+x*B. 等式两边同模9973得:n=x*B%9973. 将等式写为线性同余方程:x*B+y*9973=n.利用扩展欧几里得求x'*y'*9973=1.在将x'扩大n倍模b即为答案。
    #include <iostream>
    using namespace std;
    typedef long long ll;
    ll extgcd(ll a,ll b,ll &x,ll &y)
    {
        int d=a;
        if(b!=0)
        {
            d=extgcd(b,a%b,y,x);
            y-=(a/b*x);
        }
        else
        {
            x=1;y=0;
        }
        return d;
    }
    int main()
    {
        int T;
        cin>>T;
        while(T--)
        {
            ll a,b,c;
            cin>>c>>a;
            b=9973;
            ll x=0,y=0;
            extgcd(a,b,x,y);
            x%=b;
            while(x<0)x+=b;
            x=(x*c)%b;
            cout<<x<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Sikulix 多个相似图片的选择
    Sikulix选取相对位置的图片或对象
    Sikulix 实用方法
    两个Excel内容比较
    SIkulix在Eclipse中的使用
    Sikulix IDE简介
    安装Sikulix
    Sikuli简介
    建立连接ALM的xml config文件
    XML序列化成对象
  • 原文地址:https://www.cnblogs.com/program-ccc/p/5701566.html
Copyright © 2011-2022 走看看