HDUOJ-----Computer Transformation
Computer Transformation
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 4842 Accepted Submission(s): 1769Problem Description
A sequence consisting of one digit, the number 1 is initially written into a computer. At each successive time step, the computer simultaneously tranforms each digit 0 into the sequence 1 0 and each digit 1 into the sequence 0 1. So, after the first time step, the sequence 0 1 is obtained; after the second, the sequence 1 0 0 1, after the third, the sequence 0 1 1 0 1 0 0 1 and so on.
How many pairs of consequitive zeroes will appear in the sequence after n steps?
How many pairs of consequitive zeroes will appear in the sequence after n steps?
Input
Every input line contains one natural number n (0 < n ≤1000).
Output
For each input n print the number of consecutive zeroes pairs that will appear in the sequence after n steps.
Sample Input
2
3
Sample Output
1
1
做这道题,纯粹是一道大数的题,当然你需要推导出这个公式f[n]=f[n-1]+2*f[n-2];
1 #include<cstdio> 2 const int maxn=1000; 3 int arr[maxn+1][305]={0}; 4 int len=1; 5 void LargeNum() 6 { 7 arr[1][0]=1; 8 for(int i=2;i<=maxn;i++) 9 { 10 int c=0; 11 for(int j=0;j<len;j++) 12 { 13 arr[i][j]+=arr[i-1][j]+2*arr[i-2][j]+c; 14 if(arr[i][len-1]>9) 15 len++; 16 c=arr[i][j]/10; 17 arr[i][j]%=10; 18 } 19 } 20 21 } 22 int main( void ) 23 { 24 int n,i; 25 LargeNum(); 26 while(scanf("%d",&n)==1) 27 { 28 if(n==1)puts("0"); 29 else 30 { 31 for(i=len;arr[n-1][i]==0;i--); 32 for(int j=i;j>=0;j--) 33 printf("%d",arr[n-1][j]); 34 puts(""); 35 } 36 } 37 return 0; 38 }
编程是一种快乐,享受代码带给我的乐趣!!!