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

你可能感兴趣的:(transform)