zoukankan      html  css  js  c++  java
  • HDU 1576 A/B [逆元]

    A/B

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

    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 <bits/stdc++.h>
    using namespace std;
    void ext_gcd(int a, int b, int& d, int& x,int& y) {
        if (!b) {x = 1; y = 0; d = a;}
        else {
            ext_gcd(b, a%b, d, y, x);
            y -= x*(a/b);
        }
    }
    int main(int argc, char const *argv[])
    {
        int T;
        scanf("%d", &T);
        while (T--) {
            int m = 9973;
            int a,  b;
            scanf("%d%d", &a, &b);
            int x, y, d;
            ext_gcd(b, m, d, x, y);
            x = (x%m+ m)%m;
            printf("%d
    ", a*x%m);
        }
        return 0;
    }
     
  • 相关阅读:
    排序小结
    递推
    基准线
    毫无思绪
    计蒜客A
    尼克的任务
    售货员的难题
    Renting Boats
    工业物联网实践指南----专注生产制造活动
    阿里云单域名免费SSL证书安装
  • 原文地址:https://www.cnblogs.com/cniwoq/p/7266833.html
Copyright © 2011-2022 走看看