zoukankan      html  css  js  c++  java
  • 【模板】费马小定理

    费马小定理: 假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p) 两边都mod p;
    即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

    延伸:

    1. n*a^(p-1) ≡ n   (mod p)

    2. a^(p-2) ≡ a^(-1)  (mod p)

    3.a^b≡a^(bmod(p−1))  (modp)

     正序逆序要灵活运用!

    例题:

    C~K的难题:费马小定理+快速幂

    Problem Description

    众所周知 C~K 喜欢数学,但是他最近被一个题给难住了,题目是这样的。
    要求 (A/B)%10007,但由于 A 很大,我们只给出 n (n = A%10007)(我们给定的A必能被B整除,且 gcd(B,10007) = 1)。
    你能帮助他解答吗?他会很感谢你的。

    Input

    数据的第一行是一个 T,表示有 T 组数据。
    每组数据有两个数 n (0 <= n < 10007) 和 B (1 <= B <= 10^9)。

    Output

    对应每组数据输出 (A/B)%10007。

    Sample Input

    2
    1000 53
    87 123456789
    

    Sample Output

    8893
    7424
    
    /*
    
    (A/B)%mod => A%mod/B => n/B => n*B^(-1) => 延伸2 => n*(B^(mod-2))%mod
    
    */
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define ll long long
    
    int qmi(ll a, ll b, ll mod) {   //快速幂
    	ll flag = 1;
    	while (b) {
    		if (b & 1)flag = (flag*a) % mod;
    		a = (a*a) % mod;
    		b = b >> 1;
    	}
    	return flag%mod;
    }
    
    int main() {
    	int t, n, b,mod=10007;
    	cin >> t;
    	while (t--) {
    		cin >> n >> b;
    
    		cout << n*qmi(b, mod-2, mod) % mod << "
    ";
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    maven
    git 流程
    配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(
    ui选型
    重构
    http网站上传文件大小问题【没测试过】
    分页sql写法【只用最新的】
    dom响应事件
    html多个水平并列组件自适应等高的做法
    js写法【3】
  • 原文地址:https://www.cnblogs.com/52dxer/p/10455076.html
Copyright © 2011-2022 走看看