P1313 計算系數 [純數學]
提示:因為markdown和\(\LaTeX\)使用的是懶加載,所以布局沒有出來就請耐心等待
[NOIP2011 提高組] 計算系數 題目復制:
題目描述
給定一個多項式 \((by+ax)^k\),請求出多項式展開后 \(x^n\times y^m\) 項的系數。
輸入格式
輸入共一行,包含 \(5\) 個整數,分別為 \(a,b,k,n,m\),每兩個整數之間用一個空格隔開。
輸出格式
輸出共一行,包含一個整數,表示所求的系數。
這個系數可能很大,輸出對 \(10007\) 取模后的結果。
樣例 #1
樣例輸入 #1
1 1 3 1 2
樣例輸出 #1
3
提示
【數據范圍】
對于 \(30\%\) 的數據,有 $ 0\le k\le 10$。
對于 \(50\%\) 的數據,有 $ a=1\(,\)b=1$。
對于 \(100\%\) 的數據,有 \(0\le k\le 1000\),\(0\le n,m\le k\),\(n+m=k\),\(0\le a,b\le 10^6\)。
noip2011 提高組 day2 第 1 題。
本題的解題方式主要是依據二項式定理:
\[(x+y)^n = \binom{n}{0}{x^n}{y^2} + \binom{n}{1}{x^{n-1}}{y^1} + \binom{n}{2}{x^{n-2}}{y^2} + ...... + \binom{n}{n-1}{x^1}{y^{n-1}} + \binom{n}{n}{x^0}{y^n}
\]
其中每個 \(\binom{n}{k}\) 為一個稱作二項式系數的特定正整數,其等于 \(\frac{n!}{k!(n-k)!}\) 。這個公式也稱二項式公式或二項恒等式。使用求和符號,可以把它寫作
\[(x+y)^n = \sum_{k=0}^{n}\binom{n}{k}{x^k}{y^{n-k}}
\]
直接模仿我剛學會的二項式定理,帶入,可以得出:
\[{C^n_k}{a^n}{b^m}{x^n}{y^m}
\]
而組合數可以遞推的求:
\[C^{m}_{n} = C^{m}_{n-1} + C^{m-1}_{n-1}
\]
直接模擬:
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
// 快速冪,寫模板
long long pow_fast(long long x, long long n) {
if(n==0) {
return 1;
}
long long t = pow_fast(x, n/2)%10007;
if(n&1) {
return t*t%10007*x%10007;
} else {
return t*t%10007;
}
}
// 存儲遞推后的組合數
long long c[1005][1005] = {};
int main() {
int a, b, k, n, m;
cin >> a >> b >> k >> n >> m;
// 初始化
c[0][0] = c[1][0] = c[1][1] = 1;
// 遞推求組合數
for(int i=2; i<=k; i++) {
for(int j=0; j<=i; j++) {
if(j==0) {
c[i][j] = 1;
} else {
c[i][j] = (c[i-1][j]+c[i-1][j-1])%10007;
}
}
}
// 直接輸出
cout << c[k][n]*pow_fast(a, n)%10007*pow_fast(b, m)%10007 << endl;
return 0;
}
練習 \(\LaTeX\) 真是有點難度,入門不容易而已
本文來自博客園,作者:月神的使者,轉載請注明原文鏈接:http://www.rzrgm.cn/dffxd/p/17212676.html

浙公網安備 33010602011771號