#include<string> #include<cstring> #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<iomanip> #include<vector> #include<cstring> using namespace std; int mat[100][100]; int cal(int m, int n) { int i, j; if (n == 0 || m == n) return 1; // // 一行一行的计算下去 // for(i = 1; i <= m; i++) { // m一般不能为0 // for(j = 0; j <= i && j <= n; j++) { // 当i大于n的时候不用计算,即不用计算n列候的数,节省时间 // if(j == 0 || j == i) // mat[i][j] = 1; // else // mat[i][j] = mat[i-1][j-1] + mat[i-1][j]; // } // } // 一列一列的计算下去 for (j = 0; j <= n; j++) { // 只要计算n列就行了,不用计算后面的 mat[j][j] = 1; for (i = j + 1; i <= m; i++) { if (j == 0) mat[i][j] = 1; else mat[i][j] = mat[i - 1][j - 1] + mat[i - 1][j]; } // 计算Cmn } return mat[m][n]; } int main() { int n; while (cin >> n) { int z = 0; long long sum = 0; while (z <= n) { long long q = pow(2, n - z)*cal(n, z); //cout << q << " "; sum += q; z += 2; } cout << sum << endl; } } |
Double click to view unformatted code.