0과 1의 문자열만 제공됩니다. 문자열은 왼쪽에서 오른쪽으로 읽는 이진수를 나타냅니다. 즉, 001은 1이 아니라 4입니다. 목표는 짝수 십진수를 나타내는 모든 하위 문자열을 찾는 것입니다.
모든 부분 문자열의 첫 번째 값을 확인하여 이를 수행합니다. 값이 0이면 숫자는 1이고 숫자는 홀수입니다. 이 sbstr[0]='0'이 있는 모든 하위 문자열은 10진수가 짝수이므로 length-i만큼 증가합니다.
예를 들어 이해합시다.
입력 - str="101"
출력 − 이진 문자열에서 짝수 십진수 값 하위 문자열의 개수는 − 2
입니다.설명 − 가능한 부분 문자열:10, 11, 01, 0, 1 중 01은 2, 0은 0, 2는 짝수입니다.
입력 - str="111"
출력 − 이진 문자열에서 짝수 십진수 값 하위 문자열의 개수는 − 0
입니다.설명 − 가능한 부분 문자열은 − 11,1이며 그 중 짝수는 없습니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
문자열 str은 0과 1로만 사용합니다.
-
str의 길이를 len=str.length()에 저장
-
count_even(string str, int length) 함수는 문자열과 그 길이를 가져와서 짝수 십진수를 형성하는 부분 문자열의 개수를 반환합니다.
-
FOR 루프를 사용하여 문자열 탐색
-
인덱스 i=0에서 시작하여 i
-
str[i]=='0'이 있는 경우 시작하는 모든 하위 문자열이 10진수로 짝수임을 의미합니다.
-
증분 수는 length-i입니다.
-
결과로 카운트를 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int count_even(string str, int length){ int count = 0; for (int i = 0; i < length; i++){ if (str[i] == '0'){ count += (length - i); } } return count; } int main(){ string str = "00111"; int len = str.length(); cout<<"Count of even decimal value substrings in a binary string are: "<<count_even(str, len) << endl; return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Count of even decimal value substrings in a binary string are: 9