Computer Transformation(hdoj 1041)
8116 단어 transform
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
이
삼
Sample Output
일
일
step 1:01 step 2:1001 step 3:0110 1001 step 4:1001 0110 0110 1001 step 5:0110 1001 1001 0110 1001 0110 0110 1001
1 /* ,0 1 1 3 5 11 21 43 85, f(n)=2*f(n-2)+f(n-1),*/
2 #include<stdio.h>
3 int a[1001][305]={{0},{0},{1},{1}};
4 int b[1001]={1};
5 int calc()/* n 1000,2^1000 long long, , */
6 {
7 int i=4;
8 for(i=4;i<1001;i++)
9 {
10 int c,j;
11 for(c=0,j=0;j<305;j++)/* b 2*f(n-2)*/
12 {
13 b[j]=b[j]*2+c;/*c */
14 c=b[j]/10;
15 b[j]=b[j]%10;
16 }
17 for(c=0,j=0;j<305;j++)/* 2*f(n-2)+f(n-1) */
18 {
19 a[i][j]=b[j]+a[i-2][j]+c;
20 c=a[i][j]/10;
21 a[i][j]=a[i][j]%10;
22 }
23 }
24 }
25 int main()
26 {
27 int n,i,k=0;
28 calc();
29 while(~scanf("%d",&n))
30 {
31 if(n==1)
32 printf("0");
33 else
34 {
35 k=0;
36 for(i=300;i>=0;i--)
37 {
38 if(a[n][i]||k)
39 {
40 printf("%d",a[n][i]);
41 k=1;
42 }
43 }
44 }
45 printf("
");
46 }
47 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[220414_TIL] css transform vs positioningcss에서 element의 위치를 변경하는 방법 중에 transform과 positioning(top, left..) 가 있다. 둘 다 육안으로 보이는 결과화면은 같지만, 어떤 상황에서 무엇을 쓰는 게 더 적절할지 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.