/*
dp[n] = dp[n-1] + dp[n-2] * 2;
*/
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int dp[1001][501], n;
int main(){
memset( dp, 0, sizeof( dp ) );
dp[2][0] = dp[3][0] = 1;
for( int i = 4; i <= 1000; i++ ){
int yu = 0;
for( int j = 0; j <= 500; j++ ){
int t = dp[i-1][j] + dp[i-2][j] * 2 + yu;
dp[i][j] = t % 10;
yu = t / 10;
}
}
while( scanf( "%d", &n ) != EOF ){
if( n == 1 ){
cout << 0 << endl;
continue;
}
int flag = 1;
for( int i = 500; i >= 0; i-- ){
if( dp[n][i] || !flag ){
cout << dp[n][i];
flag = 0;
}
}
cout << endl;
}
return 0;
}
hdu 1041 找规律
最新推荐文章于 2019-11-15 08:48:19 发布