标签:upd color 转化 include i++ ++ div ace 质数
引子:
对于加法、减法、乘法,进行模运算,都满足交换律和结合律。
对于除法,当创造出了分数,取模则会出现一些意外情况。
由于分数,我们可以把除法转化成乘法的形式。
比如:
$\frac{a}{b}$ $mod p = a*b^{-1}%p$
若$a*x = 1( mod b)$,$a,b$互质,则称$x$为$b$的逆元,记作$b^{-1}$。
求法1:费马小定理
根据费马小定理:若$a$,$p$互质,且$p$为质数,则有$a^{p-1}=1(mod p)$。
我们选取一个合法的$p$,则$x = a^{p-2}(mod p)$。
故可用快速幂处理。
#include <bits/stdc++.h> typedef long long ll; using namespace std; ll n,p; ll qpow(ll a,ll b){ ll ans=1; while(b){ if(b&1) ans=(ll)(ans*a)%p; a=(ll)(a*a)%p; b>>=1; } return ans%p; } int main(){ scanf("%lld %lld",&n,&p); for(int i=1;i<=n;i++) printf("%lld\n",qpow(i,p-2)%p); return 0; }
标签:upd color 转化 include i++ ++ div ace 质数
原文地址:https://www.cnblogs.com/BeyondLimits/p/11166126.html