noip2011 day2 t1
原題位址
題目描述
給定乙個多項式(by+ax)^k,請求出多項式展開後x^n*y^m 項的係數。
輸入輸出格式
輸入格式:
輸入檔名為factor.in。
共一行,包含5 個整數,分別為 a ,b ,k ,n ,m,每兩個整數之間用乙個空格隔開。
輸出格式:
輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對10007 取模後的結果。
輸入輸出樣例
輸入樣例#1:
11 3 1 2
輸出樣例#1:3
說明
【資料範圍】
對於30% 的資料,有 0 ≤k ≤10 ;
對於50% 的資料,有 a = 1,b =1;
對於100%的資料,有 0 ≤k ≤1,000,0≤n, m ≤k ,且n + m = k ,0 ≤a ,b ≤1,000,000。
noip2011提高組day2第1題
對於學過二項式定理的高二高三黨來說,這就是一道送分題。。。如果能順利地打出大組合數取模和快速冪的話。
二項式定理:
tk+1表示(a+b)n展開式的第k+1項,其通式為tk+1=c(n,k)akb(n-k)。然後就可以解決了。直接跑組合數(本蒟蒻用逆元寫的,老實說盧卡斯定理不怎麼會用,用不好了有可能超時),再跑兩個快速冪就出來了,唯一比較坑的地方就是要打好多好多次取模,一不留神就可能出錯,所以要細心。
參考**
#include#include#include#includeusing namespace std;
int jc[1005];
const int mod=10007;
long long power(int x,int y)
long long c(int n,int m)
int main()
{ inta,b,k,n,m;
cin>>a>>b>>k>>n>>m;
longlong p1,p2,p3,p;
jc[1]=1;
for(int i=2;i<=k;i++)
jc[i]=(jc[i-1]*i)%mod;
p1=c(k,min(n,m));
p2=power(a,n);
p3=power(b,m);
p=(p1%mod*p2%mod)%mod*p3%mod;
cout<
洛谷 P1313 計算係數
題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入輸出格式 輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對...
洛谷 P1313 計算係數
題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入輸出格式 輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對...
洛谷 P1313 計算係數
題目描述 給定乙個多項式 by ax k,請求出多項式展開後x n y m 項的係數。輸入格式 輸入檔名為factor.in。共一行,包含5 個整數,分別為 a b k n m,每兩個整數之間用乙個空格隔開。輸出格式 輸出共1 行,包含乙個整數,表示所求的係數,這個係數可能很大,輸出對10007 取...