洛谷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級別的...