#include <cstdio> int num[10000][260]={0}; int main(){ int i,j,n; num[1][0]=1; num[2][0]=1; num[3][0]=1; num[4][0]=1; for(i=5;i<10000;i++) { for(j=0;j<260;j++) num[i][j]=num[i-1][j]+num[i-2][j]+num[i-3][j]+num[i-4][j]; for(j=0;j<259;j++) if(num[i][j]>100000000) { num[i][j+1]+=num[i][j]/100000000; num[i][j]%=100000000; } } while(scanf("%d",&n)!=EOF) { for(i=259;i>0;i--) if(num[n][i]!=0) break; printf("%d",num[n][i]); for(j=i-1;j>=0;j--) printf("%08d",num[n][j]); printf(" "); } return 0; }
注意:“%08d”:控位