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

C++에서 허용되는 2자리(및 7)만 있는 시리즈에서 n번째 요소 찾기


이 문제에서는 4와 7로만 구성된 일련의 숫자를 나타내는 정수 N이 주어집니다.

시리즈는 4, 7, 44, 47, 74, 77, …

작업은 2자리(및 7)만 허용되는 시리즈에서 n번째 요소를 찾는 것입니다.

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

입력

N = 4,

출력

47

설명

The series is: 4, 7, 44, 47, ….

해결 방법

문제에 대한 간단한 해결책은 N번째 숫자까지 시리즈를 생성하는 것입니다. 간단합니다. 현재 숫자의 마지막 숫자가 7이면 이전 숫자와 다음 숫자의 마지막 숫자가 4입니다.

따라서 첫 번째와 두 번째 숫자부터 시작하여 다음 요소로 진행합니다.

이를 위해 배열 시리즈[n+1]를 생성합니다.

For index series[1] put 4
For index series[2] put 7

그런 다음 N까지의 연속적인 값에 대해 주어진 인덱스 i에 대한 값을 찾습니다.

If i is odd, series[i] = series[i/2]*10 + 4
If i is even, series[i] = series[i/2]*10 + 7

n회 반복 후 시리즈[n]의 값을 반환합니다.

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

#include <iostream>
using namespace std;
int findNthSeriesElement(int N) {
   int series[N+1];
   series[1] = 4;
   series[2] = 7;
   for (int i=3; i<=N; i++) {
      if (i%2 != 0)
         series[i] = series[i/2]*10 + 4;
      else
         series[i] = series[(i/2)-1]*10 + 7;
   }
   return series[N];
}
int main() {
   int N = 9;
   cout<<"The "<<N<<"th element of the array is "<<findNthSeriesElement(N);
   return 0;
}

출력

The 9th element of the array is 474