1로 시작하는 시퀀스 생성기가 있습니다. 각 단계에서 0은 10이 되고 1은 01이 됩니다. 따라서 다음 변경이 연속 단계에서 발생합니다 -
1단계 − 01
2단계 − 1001
3단계 − 01101001 ……
목표는 주어진 단계 수에 대해 연속적인 0 쌍의 수를 찾는 것입니다.
입력 스텝이 0-0의 1쌍이면 입력 스텝은 0-1의 2쌍, 입력 스텝은 0의 1의 3쌍
4단계 − 1001011001101001
5단계 − 01101001100101101001011001101001
시퀀스가 2의 거듭제곱으로 증가하고 길이 12 이후 및 12자마다 반복되는 것을 관찰할 수 있습니다. 따라서 이 12개의 길이 시퀀스에는 2쌍의 연속적인 0이 있습니다.
S 단계의 경우 12개의 길이 패턴 수는 2S /12입니다.
연속된 2 패턴의 수 =1(초기) + 2 X S(나머지 12길이 반복)
예를 들어 이해합시다.
입력 - 단계 =5
출력 − 연속 0 쌍의 수는 − 5입니다.
설명 − 위의 5단계 시퀀스는 다음과 같습니다. -
Step 5: 01101001100101101001011001101001 Number of pairs of 0’s is 5. Also with formula : tmp=25 /12= 32/12 = 2, pairs=1+ 2 x 2 = 5
입력 - 단계 =10
출력 − 연속 0 쌍의 수는 − 171입니다.
설명 − 공식 사용 시 − tmp=210/12=1024/12 =85, 쌍=1+ 2 x 85 =171
아래 프로그램에서 사용한 접근 방식은 다음과 같습니다.
단계 수를 입력으로 취하고 단계=1이면 연속적인 0 쌍의 수가 0인지 확인합니다. 단계=2 또는 3이면 그러한 쌍의 수는 1입니다.
그렇지 않으면 공식 tmp=2input/12 및 pair=1+2*tmp를 사용하여 계산합니다.
-
단계에 대한 입력으로 가변 십진수를 사용합니다.
-
Zero_pairs(int decimal) 함수는 10진수를 취하고 해당 단계에 대한 연속 0 쌍의 수를 반환합니다.
-
초기 카운트를 0으로 합니다.
-
10진수<=1이면 0을 반환합니다.
-
10진수==2 또는 10진수==3인 경우. 그런 다음 1을 반환합니다.
-
그렇지 않으면 temp=(pow(2,decimal))/12를 계산하고 count를 2*temp + 1로 계산합니다.
-
결과로 카운트를 반환합니다.
예시
#include<bits/stdc++.h> using namespace std; int Zero_pairs(int decimal){ int count = 0; if(decimal <=1){ count = 0; } else if(decimal == 2 || decimal == 3){ count = 1; } else{ int temp = (pow(2, decimal) / 12); count = 2 * temp + 1; } return count; } int main(){ int decimal = 7; cout<<"Count of Pairs Of Consecutive Zeros are: "<<Zero_pairs(decimal); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of Pairs Of Consecutive Zeros are: 21