Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 프로그램의 바움 스위트 시퀀스?

<시간/>

여기서 우리는 Baum Sweet Sequence를 볼 것입니다. 이 시퀀스는 하나의 이진 시퀀스입니다. 숫자 n에 연속된 0이 홀수이면 n번째 비트는 0이 되고, 그렇지 않으면 n번째 비트는 1이 됩니다.

자연수 n이 있습니다. 우리의 임무는 Baum Sweet 수열의 n번째 항을 찾는 것입니다. 따라서 홀수 길이의 연속적인 0 블록이 있는지 확인해야 합니다.

숫자가 4이면 항은 1이 됩니다. 4는 100이기 때문입니다. 따라서 0이 두 개(짝수) 있습니다.

알고리즘

BaumSweetSeqTerm (G, s) -

크기 n의 비트 시퀀스 seq 정의 시작 baum :=1 len :=범위 0에서 len까지의 i에 대해 n의 이진 비트 수, j :=i + 1 count :=1 if seq[i] =0, 그런 다음 범위 i + 1에서 len까지의 j에 대해 seq[j] =0이면 카운트를 늘리고 그렇지 않으면 카운트가 홀수이면 끝을 끊고 baum :=0 끝이면 끝이면 baumend를 반환합니다.> 

예시

#include 네임스페이스 std;int BaumSweetSeqTerm(int n) { bitset<32> sequence(n); // 비트 단위 표현 저장 int len ​​=32 - __builtin_clz(n); //builtin_clz() 함수는 첫 번째 1 이전에 존재하는 0의 수를 제공합니다. int baum =1; // 바움 시퀀스의 n번째 항 for (int i =0; i  

출력

1