type1 $\frac\%p,其中p是大質數$
用費馬小小定理得:
$y^\equiv 1(mod p)$
故:$\frac\%p=\frac}\%p=x*y^\%p$
type2 $\frac\%p,其中x和y可分解質因數$
我們還是用一些例子來講比較好一些。
求卡特蘭數$\frac^}\%p$
$\frac^}\%p$
$=\frac\%p$
乙個直接的想法是分別將分子和分母分解質因數,但是這樣寫起來很噁心。
我們這樣想:
將$n^$分解質因數:
$n^=(p_^}\times p_^}\times...\times p_^})^i$
我們任取n的乙個質因子,不妨為$p_$。
$n=(p_)^\times (p_^-1}\times p_^}\times...\times p_^})^$
其實就是$p_$多了i個,$p_^-1}\times p_^}\times...\times p_^}$多了i個。
我們可以交給$p_$和$p_^-1}\times p_^}\times...\times p_^}$做。
如果n本來就是質數,直接快速冪。
找n的質因子可以用線性篩。
下面是bzoj1485**,就是求$\frac^}\%p$。
#include#includeview code#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include適用於cf,uoj,但不適用於poj
using
namespace
std;
typedef
long
long
ll;typedef
double
db;typedef pair
pii;
typedef complex
cp;#define mmst(a,v) memset(a,v,sizeof(a))
#define mmcy(a,b) memcpy(a,b,sizeof(a))
#define fill(a,l,r,v) fill(a+l,a+r+1,v)
#define re(i,a,b) for(i=(a);i<=(b);i++)
#define red(i,a,b) for(i=(a);i>=(b);i--)
#define ire(i,x) for(typedef(x.begin()) i=x.begin();i!=x.end();i++)
#define fi first
#define se second
#define m_p(a,b) make_pair(a,b)
#define sf scanf
#define pf printf
#define two(k) (1<
inline t sqr(t x)
template
inline void upmin(t &t,t tmp)
template
inline void upmax(t &t,t tmp)
const db eps=1e-9
;inline
int sgn(db x)
const db pi=acos(-1.0
);inline
intgint()
for(;z!=eof && isdigit(z);res=res*10+z-'
0',z=getchar());
return (neg)?-res:res;
}inline ll gll()
for(;z!=eof && isdigit(z);res=res*10+z-'
0',z=getchar());
return (neg)?-res:res;
}const
int maxn=2000000
;int
n;ll p;
ll ans;
inline ll power(ll a,ll k)return
x;}int flag[maxn+100],cnt,prime[maxn+100
];int a[maxn+100
];ll b[maxn+100
];int
main()
}re(i,
2,n)b[i]=-1
; re(i,n+2,2*n)b[i]=1
; ans=1
; red(i,
2*n,2
)
if(!flag[i])
ans=ans*power(ll(i),b[i])%p;
else
b[a[i]]+=b[i],b[i/a[i]]+=b[i];
cout
return0;
}
type 3
$\frac\%m=\frac$
除法的取模運算
逆元 若,b b1 c 1 則,b1稱為b模c的乘法逆元。在acm中,許多除法取模都要用到求逆元。但是,逆元,為什麼能給我們帶來 a b c a b1 c 當然a b要整除 要知道,取模等式等價變形中,是沒有除法的!而推導式,還是沒有用除法的地方!我們用反證法證明 若b b1 c 1,則 a b c...
JS的乘法,除法,取模,加法,減法運算
一 乘法運算 如果運算數都是數字,執行常規的乘法運算。如果結果太大或太小,那麼生成的結果就是infinity 或 infinity 1 如果某個運算數是nan 結果為 nan 2 infinity乘以 0,結果為 nan 3 infinity乘以 0以外的數字,結果為 infinity 或 infi...
多項式除法 取模
除法 取模 設 n 次多項式 f x 和 m 次多項式 g x 求 n m 次多項式 q x 和 m 1 次多項式 r x 滿足 f x g x q x r x 於是我們有 f frac g frac q frac r frac 兩遍同乘 x n x nf frac x mg frac x q fr...