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

C++에서 4와 7로 이루어진 수 중에서 주어진 수의 위치 찾기

<시간/>

이 문제에서 우리는 숫자 N이 주어집니다. 우리의 임무는 4와 7로 이루어진 숫자 중에서 주어진 숫자의 위치를 ​​찾는 것입니다. 4와 7로만 구성된 시리즈는 4, 7, 44, 47, 74, 77, 444….

문제를 이해하기 위해 예를 들어보겠습니다.

입력

N = 5

출력

74

설명

Series upto 5 terms is 4, 7, 44, 47, 74…

솔루션 접근 방식

문제에 대한 간단한 해결책은 시리즈에서 패턴을 찾는 것입니다.

여기에서 모든 짝수 위치에는 끝에 7이 포함됩니다.

그리고 모든 홀수 위치에는 끝에 4가 포함됩니다.

따라서 숫자로 이동하고 현재 숫자를 기준으로 위치를 찾으면 시리즈를 찾을 수 있습니다.

현재 자리가 4인 경우 위치는 position =(position*2) + 1로 업데이트됩니다.

현재 자리가 7이면 position =(position*2) + 2로 위치가 갱신됩니다.

우리 솔루션의 작동을 설명하는 프로그램

예시

#include <iostream>
using namespace std;
int findNumPosition(string num){
   int i = 0, position = 0;
   while (num[i] != '\0') {
      position *= 2;
      if(num[i] == '4')
         position += 1;
      else
         position += 2;
      i++;
   }
   return position;
}
int main() {
   string num = "74774";
   cout<<"The position of the number in the series is "<<findNumPosition(num);
   return 0;
}

출력

The position of the number in the series is 53