題意:給你三個數,n,m,p,n是樹的個數,m是最多拿的果子,p是最後求的數取模p,問有幾種拿果子的方法。這樣一看這個題就是乙個找規律的題,其實可以把這個題合併起來,樹的個數是n,可以把最多拿的果子看作樹,然後每個樹上拿乙個果子,問這m個果子的拿法。
用個辦法來分析這道題目,最終知道這道題其實就是讓你輸出cm
n+m
lucas定理的解析傳送門
這裡我用的是費馬小定理求逆元的方法
直接上**:
#include
#include
#include
#include
using
namespace
std;
long
long p,m1,n1;
long
long pow(long
long a,long
long b)
b>>=1;
a=(a*a)%p;
}return ans;
}long
long c(long
long n,long
long m)
return (a*pow(b,p-2))%p;
}long
long lucas(long
long n,long
long m)
int main()
hdu 3037(lucas定理求大組合數取模)
下面簡單介紹一下lucas定理 lucas定理是用來求 c n,m mod p的值,p是素數 從n取m組合,模上p 描述為 a b是非負整數,p是質數。ab寫成p進製 a a n a n 1 a 0 b b n b n 1 b 0 則組合數c a,b 與c a n b n c a n 1 b n 1...
hdu 3037 插板法組合 lucas定理
插板法解決的問題 a1 a2 a3 an m 如果a i 必須是正整數,cn 1m 1 如果a i 是非負數,先強制選 1 轉化為正整數cn 1m 1 n擴充套件,對於每個數最小為多少都可以通過先強行加減的方法把它轉化為,正整數問題。lucas定理 解決cm n mo d 的計算。本題就是插板法列出...
HDU 3037 隔板法 組合數 Lucas
題意 求在n棵樹上摘不超過m顆豆子的方案數,結果對p取膜。思路 其實就相當於把i 0 i m 個球放入n個不同的盒子裡,盒子可以為空。很明顯,需要用到隔板法。所以對於i個球,方案數為c i n 1,n 1 總方案數為c n 1,n 1 c n,n 1 c n m 1,n 1 然後根據公式c n,m ...