http://acm.hdu.edu.cn/showproblem.php?pid=1041
高精度,f[n] = f[ n - 1 ] + f[ n - 2 ] * 2 ;
f[ 0 ] = 0 ;
f[ 1 ] = 1 ;
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<bitset> using namespace std; int num[ 1010 ][ 1010 ]; int main() { num[ 1 ][ 0 ] = 0 ; num[ 2 ][ 0 ] = 1 ; for( int i = 3 ; i <= 1000 ; ++i ) { for( int j = 0 ; j < 1000 ; ++j ) { num[ i ][ j ] += num[ i - 1 ][ j ] + num[ i - 2 ][ j ] * 2 ; if( num[ i ][ j ] > 9 ) {num[ i ][ j + 1 ] = num[ i ][ j ] / 10 ; num[ i ][ j ] %= 10 ; } } } int n ; while( cin >> n ) { if( n == 1 ) cout << "0" <<endl ; else { bool flag = true; for(int i=999;i>=0;i--) { if( num[n][i] && flag) { flag = false; } if(!flag) cout << num[n][i] ; } cout << endl; } } return 0 ; }