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

C++의 키스 번호

<시간/>

이 튜토리얼에서는 주어진 숫자가 Keith Number인지 확인하는 프로그램을 작성할 것입니다. 여부.

숫자 n은 숫자를 사용하여 생성된 시퀀스에 나타나는 경우 Keith 수라고 합니다. 시퀀스는 숫자 n의 자릿수로 처음 n개의 항을 가지며 다른 항은 이전 n개의 항의 합으로 재귀적으로 평가됩니다.

문제를 해결하는 단계를 살펴보겠습니다.

  • 숫자 n을 초기화합니다.
  • 빈 벡터 요소를 초기화하여 시퀀스를 저장합니다.
  • 숫자를 세고 모든 숫자를 벡터에 추가합니다.
  • 숫자 벡터를 뒤집습니다.
  • 다음 요소라고 하는 변수를 0으로 초기화합니다.
  • 다음 요소가 n보다 작아질 때까지 반복하는 루프를 작성합니다.
    • 다음 요소를 가져오려면 마지막 n자리를 추가하세요.
    • 벡터에 다음 요소를 추가합니다.
  • 다음 요소가 n과 같으면 true를 반환하고 그렇지 않으면 false를 반환합니다.

예시

코드를 봅시다.

#include<bits/stdc++.h>
using namespace std;
bool isKeithNumber(int n) {
   vector<int> elements;
   int temp = n, digitsCount = 0;
   while (temp > 0) {
      elements.push_back(temp % 10);
      temp = temp / 10;
      digitsCount++;
   }
   reverse(elements.begin(), elements.end());
   int nextElement = 0, i = digitsCount;
   while (nextElement < n) {
      nextElement = 0;
      for (int j = 1; j <= digitsCount; j++) {
         nextElement += elements[i - j];
      }
      elements.push_back(nextElement);
      i++;
   }
   return nextElement == n;
}
int main() {
   isKeithNumber(43) ? cout << "Yes" << endl : cout << "No" << endl;
   isKeithNumber(14) ? cout << "Yes" << endl : cout << "No" << endl;
   isKeithNumber(197) ? cout << "Yes" << endl : cout << "No" << endl;
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

No
Yes
Yes

결론

튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.