> 백엔드 개발 > C++ > 본문

C++에서는 의사 이진수의 가능한 가장 작은 합으로 숫자를 나타냅니다.

WBOY
풀어 주다: 2023-08-25 20:33:22
앞으로
1237명이 탐색했습니다.

C++에서는 의사 이진수의 가능한 가장 작은 합으로 숫자를 나타냅니다.

이 튜토리얼에서는 의사 이진수의 가장 작은 합으로 숫자를 표현하는 방법에 대해 설명합니다. 의사 이진수(pseudo-binary number)는 이진수 0과 1로 구성된 숫자입니다. 유사 이진수의 예로는 00, 11, 10, 100, 111, 1011 등이 있습니다.

다음은 유사 이진수의 합으로 표현되는 숫자의 몇 가지 예입니다.

Input : 23
Output : 11 + 11 + 1
Explanation : 23 = 11 + 11 + 1, sum of pseudo-binary numbers(11, 11, 1) is 23.

Input : 50
Output : 10 + 10 + 10 + 10 + 10
로그인 후 복사

해결 방법을 찾는 방법

다음은 N을 나타내는 가장 작은 유사 이진수를 찾는 가장 좋은 방법 중 하나입니다.

  • 숫자 X를 선택하고 숫자 N의 각 자릿수에 따라 X의 자릿수를 1 또는 0으로 업데이트하세요.

  • N의 각 숫자를 확인하세요.

    • 0이면 X의 해당 비트를 0으로 설정하세요.

    • 0이 아닌 경우 X의 비트를 1로 설정합니다.

    • N = 32라고 가정하면 X는 11이 됩니다.

  • 그러면 X는 의사 이진수가 됩니다.

  • 이제 N에서 X를 빼고 N이 0이 될 때까지 1단계를 반복하세요.

위 방법에 대한 C++ 코드

#include<iostream>
using namespace std;
int main(){
   int N = 51;
   // find a pseudo-binary number until N becomes 0.
   cout << "pseudo-binary representation of " << N << " is: ";
   while (N > 0){                
      // finding X which contains 0&#39;s and 1&#39;s according to N.
      int temp = N;
      int X = 0, bit = 1;
      // checking each place of N for zero or non-zero.
      while (temp!=0){
      int last_dig = temp % 10;
      temp = temp / 10;
      if (last_dig != 0)
         X += bit;
         bit *= 10;
      }
      // printing one pseudo-binary number.
      cout << X << " ";
      // Updating N by subtracting with X.
      N = N - X;
       
   }
   return 0;
}
로그인 후 복사

Output

pseudo-binary representation of 51 is: 11 10 10 10 10
로그인 후 복사

코드 이해하기

  • 외부 while 루프는 N을 얻고 각 위치에서 숫자를 선택하여 X를 찾는 데 사용됩니다.

  • N 값을 임시 변수로 업데이트하고 내부 루프를 사용하여 임시 변수의 각 위치를 확인하고 변수 X의 해당 위치를 업데이트하여 이를 수행합니다.

  • X의 값은 의사 이진수이므로 인쇄하세요.

  • N에서 X를 빼고 N이 0이 될 때까지 외부 루프에 다시 들어가 N을 업데이트합니다.

결론

이 튜토리얼에서는 의사 이진수의 가능한 가장 작은 합으로 숫자를 표현하는 방법에 대해 논의했습니다. 우리는 모든 유사 이진수를 찾는 방법을 논의했습니다. 또한 동일한 C++ 코드를 C, Java, Python 등과 같은 다른 프로그래밍 언어로 작성할 수 있다는 점도 논의했습니다. 이 튜토리얼이 도움이 되길 바랍니다.

위 내용은 C++에서는 의사 이진수의 가능한 가장 작은 합으로 숫자를 나타냅니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿