zoukankan      html  css  js  c++  java
  • HDU1576 A/B 费马小定理

    A/B

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


     

    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

    思路:由gcd(B,9973)=1可知,B与9973互质,且为质数,因此可以用费马小定理来求出B对9973的乘法逆元;

    (A/B)%mod==(A*B的逆元)%mod.

    代码:

    #include <iostream>
    using namespace std;
    typedef long long ll;
    int mod=9973;
    ll quickpow(ll a,ll b)
    {
            ll res = 1;
    	a = a % mod;
            while(b)
            {
            if(b & 1) res = res * a % mod;
            a = a * a % mod;
            b >>= 1;
            }
            return res;
    }
    int main()
    {
    	int t,n,b,ans;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n>>b;
    		ans=quickpow(b,mod-2);
    		cout<<ans*n%mod<<endl;
    	}
    	return 0;
    }
    
     
    
     
  • 相关阅读:
    2017年6月笔记
    2017年5月笔记
    2017年4月笔记
    转发:i p _ f o r w a r d函数
    IP分组
    IP协议首部结构介绍
    IP:网际协议
    sed工具使用
    正则表达式匹配
    TCP的半连接
  • 原文地址:https://www.cnblogs.com/cnlik/p/11851891.html
Copyright © 2011-2022 走看看