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这个题有病,如果暴力的去计算会超时,他的数的位数是2的n次方个,逐渐的不断增大,导致int不足。这题设计到大数的相乘运算,包含了高精度算法。还有他的规律是f(n)=f(n-1)+2×F(N-2).老奇葩的题.还有这个题注意while出的~,不写回超时的,我一个一个测试才找出来的.#include<stdio.h> #include<string.h> //const int N=1000+10; int a[1010][400]; int main() { memset(a,0,sizeof(a)); a[1][0]=0,a[2][0]=1; int i,j; for(i=3;i<1001;i++) { int c=0; for( j=0;j<=400;j++) { a[i][j]=a[i-1][j]+2*a[i-2][j]+c; c=a[i][j]/10; a[i][j]=a[i][j]%10; } } int n; while(~scanf("%d",&n)) { if(n==1) printf("0\n"); else { for(i=399;i>=0;i--) { if(a[n][i]) break; } for(int j=i;j>-1;j--) { printf("%d",a[n][j]); } printf("\n"); } } }