主要还是找规律,然后大数相乘
#include<stdio.h> #include<string.h> #include<math.h> #include<time.h> #include<map> #include<iostream> #include<ctype.h> #include<string> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> using namespace std; const int N=1000+10; int a[1010][400]; void dabiao() { int i,j; memset(a,0,sizeof(a)); a[1][0]=0; a[2][0]=1; for(i=3;i<=1000;i++) { int jin=0; for(j=0;j<400;j++) { a[i][j]=a[i-1][j]+2*a[i-2][j]+jin; jin=a[i][j]/10; a[i][j]%=10; } } } int main() { int n,i,j,m; dabiao(); while(~scanf("%d",&n)) { if(n==1) { printf("0\n"); continue; } for(i=399;i>=0;i--) if(a[n][i]) break; for(j=i;j>=0;j--) printf("%d",a[n][j]); printf("\n"); } }
原文地址:https://www.cnblogs.com/nr1999/p/9417384.html
时间: 2024-10-12 12:59:30