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): 1769
Problem 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?
 
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 }
View Code
posted @ 2013-07-19 10:13  龚细军  阅读(403)  评论(0编辑  收藏  举报