luogu 2480 古代豬文

2021-10-09 22:51:11 字數 1761 閱讀 9399

洛谷p2480 古代豬文

題意就是求下列的式子:

包含 crt、lucas、費馬小定理、尤拉定理、逆元

數論全家桶(小)

ac**:

#include

using

namespace std;

typedef

long

long

int ll;

const

int _mod =

999911659

;const

int mod =

999911658

;const

int maxn =

40005

;//快速冪

inline ll ksm

(ll x,ll pow,ll mod)

return ans;

}//快讀

inline ll read()

while

(isdigit

(ch)

)return x*f;

}/*--用盧卡斯求組合數mod p --*/

//初始化階乘與階乘的逆元

ll fac[maxn]

,inv[maxn]

;inline

void

init_fac

(ll p)

//在 mod p 下的階乘與逆元

inline ll c

(ll n,ll m,ll p)

//在mod p 下的組合數

inline ll lucas

(ll n,ll m,ll p)

/*- crt 中國剩餘定理 -*/

ll a[10]

;//表示crt方程的餘數ai

ll p[10]

;//分解出的模數

ll cnt;

//模數數量

inline

void

getcrt_a

(ll x,ll n,ll d[

],ll tot)

// 求第x個餘數ax , d為組合數m的數列 c(n,m)

inline ll crt

(ll a[

],ll p[

],ll cnt)

// 餘數 模數 數量

return

(ans+mod)

%mod;

// 保留正數解

}/*- 主程式 -*/

intmain()

//分解因數

ll t = mod;

for(

int i=

2;i*i<=mod;i++)}

if(t!=

1) p[

++cnt]

=t;//求因數

ll tot =0;

ll d[maxn]

;for

(int i=

1;i*i<=n;i++)}

for(

int i=

1;i<=cnt;i++

)getcrt_a

(i,n,d,tot)

;printf

("%lld\n"

,ksm

(g,crt

(a,p,cnt)

,_mod));

return0;

}

題解 lg2480 古代豬文

給定整數 q,n 1 leq q,n leq 10 9 求 q c mod 999911659 首先由擴充套件尤拉定理可知,因為999911659為質數 q c equiv q c mod 999911658 mod 999911659 設 x sum c mod 999911658 然後再 由於 ...

P2480 SDOI2010 古代豬文

p2480 sdoi2010 古代豬文 比較綜合的一題 前置 lucas 定理,crt 求的是 g x bmod 999911659,textx sum tbinom 由於這個 999911659 是質數,肯定於 g 互質,所以由尤拉定理很容易證明 a equiv 1 pmod p rightarr...

古代豬文(數論)

傳送門 算是一道比較綜合的數論題了吧!用到了尤拉定理,中國剩餘定理,盧卡斯這些。但整道題還是很簡單的。摘自洛谷部落格 題目大意是求 因為指數太大但它是個質數,我們考慮用尤拉定理的推論得到 因為與組合數有關,我們會想到用盧卡斯定理,但是999911658這個模數太大 好像盧卡斯模數是可以做1e5級別的...