数论是我一生之敌。QAQ
这个巨佬的博客数论是极好的,但是,他好像弃坑了。
emmm,这个比较简单,就贴代码。
for (i=2; i<maxn; ++i) { if (!isn_prime[i]) prime[++cnt]=i; for (phi[i]=cnt,j=1; j<=cnt&&prime[j]*i<maxn; ++j) { isn_prime[i*prime[j]]=1; if (i%prime[j]==0) break; } }老是会忘掉。qwq
a x + b y = g c d ( a , b ) = 1 ax+by=gcd(a,b)=1 ax+by=gcd(a,b)=1
∵ g c d ( a , b ) = g c d ( b , a % b ) \because gcd(a,b)=gcd(b,a\%b) ∵gcd(a,b)=gcd(b,a%b)
∴ a x + b y = g c d ( a , b ) = g c d ( b , a % b ) = b x ′ + ( a % b ) y ′ \therefore ax+by=gcd(a,b)=gcd(b,a\%b)=bx'+(a\%b)y' ∴ax+by=gcd(a,b)=gcd(b,a%b)=bx′+(a%b)y′
⇒ b x ′ + ( a − b ∗ ⌊ a b ⌋ ) y ′ \Rightarrow bx'+(a-b*\lfloor\cfrac{a}{b}\rfloor)y' ⇒bx′+(a−b∗⌊ba⌋)y′
⇒ a y ′ + b ( x ′ − y ′ ∗ ⌊ a b ⌋ ) \Rightarrow ay'+b(x'-y'*\lfloor\cfrac{a}{b}\rfloor) ⇒ay′+b(x′−y′∗⌊ba⌋)
∴ x = y ′ , y = ( x ′ − y ′ ∗ ⌊ a b ⌋ ) \therefore x=y',y=(x'-y'*\lfloor\cfrac{a}{b}\rfloor) ∴x=y′,y=(x′−y′∗⌊ba⌋)
i n v [ a ] = i n v [ P % a ] ∗ ( P − ⌊ P a ⌋ ) inv[a]=inv[P\% a]*(P-\lfloor\cfrac{P}{a}\rfloor) inv[a]=inv[P%a]∗(P−⌊aP⌋)
令 x = P % a , y = ⌊ P a ⌋ x=P\% a,y=\lfloor\cfrac{P}{a}\rfloor x=P%a,y=⌊aP⌋
则 x + a y = P x+ay=P x+ay=P
即 x + a y ≡ 0 ( m o d P ) x+ay\equiv0\ \ (mod\ P) x+ay≡0 (mod P)
x ≡ − a y ( m o d P ) x\equiv-ay\ (mod\ P) x≡−ay (mod P)
i n v ( a ) ≡ i n v ( x ) ∗ ( P − y ) ( m o d P ) inv(a)\equiv inv(x)*(P-y)\ (mod\ P) inv(a)≡inv(x)∗(P−y) (mod P)
∴ i n v ( a ) ≡ i n v ( P % a ) ∗ ( P − ⌊ P a ⌋ ) \therefore inv(a)\equiv inv(P\%a)*(P-\lfloor\cfrac{P}{a}\rfloor) ∴inv(a)≡inv(P%a)∗(P−⌊aP⌋)
我好弱,FTQ说这种题很经典,我却没做过。QwQ
我们可以吧 N ! N! N!分成长 M ! M! M!块,显然每块答案是 ϕ ( M ! ) \phi(M!) ϕ(M!)
所以 a n s = N ! M ! ∗ φ ( M ! ) ans=\cfrac{N!}{M!}*\varphi(M!) ans=M!N!∗φ(M!)
可以知道对于 φ ( N ) \varphi(N) φ(N)有
φ ( N ) = φ ( ∏ 1 m P i ε i ) = ∏ i m ( P i ε i ∗ P i − 1 P i ) = N ∗ ∏ i m ( P i − 1 P i ) \varphi(N)=\varphi(\prod_{1}^{m}P_i^{\varepsilon_{i}})=\prod_i^m(P_i^{\varepsilon_i}*\cfrac{P_i-1}{P_i})=N*\prod_i^m(\cfrac{P_i-1}{P_i}) φ(N)=φ(∏1mPiεi)=∏im(Piεi∗PiPi−1)=N∗∏im(PiPi−1)
所以 a n s = N ! ∗ ∏ ( P − 1 ) ∗ ∏ i n v ( P ) ans=N!*\prod(P-1)*\prod inv(P) ans=N!∗∏(P−1)∗∏inv(P) P为小于等于 M M M的质数。