考虑我们有一个数字n,我们必须找到偶数索引的二项式系数之和,例如$$\ left(\ begin {array} {c} n \\ 0 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 2 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 4 \ end {array} \ right)+ \ left(\ begin {array } {c} n \\ 6 \ end {array} \ right)+ ... \ left(\ begin {array} {c} 4 \\ 0 \ end {array} \ right)+ \ left(\ begin { array} {c} 4 \\ 2 \ end {array} \ right)+ \ left(\ begin {array} {c} 4 \\ 4 \ end {array} \ right)++ = 1 + 6 + 1 = 8 $$
因此,这里我们将找到所有二项式系数,然后仅找到偶数索引值的总和。
#include<iostream>
using namespace std;
int evenIndexedTermSum(int n) {
int coeff[n + 1][n + 1];
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= min(i, n); j++) {
if (j == 0 || j == i)
coeff[i][j] = 1;
else
coeff[i][j] = coeff[i - 1][j - 1] + coeff[i - 1][j];
}
}
int sum = 0;
for (int i = 0; i <= n; i += 2)
sum += coeff[n][i];
return sum;
}
int main() {
int n = 8;
cout << "Sum of even placed binomial coefficients: " <<evenIndexedTermSum(n);
}输出结果
Sum of even placed binomial coefficients: 128