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];

HDUOJ-----Computer Transformation_git

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 }

HDUOJ-----Computer Transformation_#include_02View Code

编程是一种快乐,享受代码带给我的乐趣!!!