您的位置:首页 > 其它

Computer Transformation(规律,大数打表)

2015-11-15 16:44 225 查看

Computer Transformation

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6946 Accepted Submission(s): 2515


[align=left]Problem Description[/align]
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?

[align=left]Input[/align]
Every input line contains one natural number n (0 < n ≤1000).

[align=left]Output[/align]
For each input n print the number of consecutive zeroes pairs that will appear in the sequence after n steps.

[align=left]Sample Input[/align]

2
3

[align=left]Sample Output[/align]

1
1
题解:f(n)=2*f(n-2)+f(n-1)由于每个n-2的00生成两个01,在n的地方就会生成两个00;n-1的00在n生成一个00;由此可以找出规律;
代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
const int MAXN=1010;
char dp[MAXN][MAXN];
char c[MAXN];
int x[MAXN],y[MAXN],z[MAXN];
void bigsum(char *a,char *b){
int len1,len2;
mem(x,0);mem(y,0);mem(z,0);
len1=strlen(a);len2=strlen(b);
int len=max(len1,len2);
for(int i=len1-1,j=0;i>=0;i--,j++)x[j]=a[i]-'0';
for(int i=len2-1,j=0;i>=0;i--,j++)y[j]=b[i]-'0';
for(int i=0;i<len;i++){
z[i]=x[i]+y[i]+z[i];
z[i+1]+=z[i]/10;
z[i]%=10;
if(z[len])len++;
}
for(int i=len-1,j=0;i>=0;i--,j++)c[j]=z[i]+'0';
c[len]='\0';
}
int main(){
int n;
dp[1][0]='0';dp[1][1]='\0';
dp[2][0]='1';dp[2][1]='\0';
for(int i=3;i<=1000;i++){
bigsum(dp[i-1],dp[i-2]);
bigsum(c,dp[i-2]);
memcpy(dp[i],c,sizeof(c));
}
while(~scanf("%d",&n)){
printf("%s\n",dp
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: