Keith Number in C++

C++Server Side ProgrammingProgramming

In this tutorial, we are going to write a program that checks whether the given number is Keith Number or not.

The number n is called Keith number if it appears in the sequence generated using its digits. The sequence has first n terms as digits of the number n and other terms are recursively evaluated as sum of previous n terms.

Let's see the steps to solve the problem.

  • Initialise the number n.
  • Initialise an empty vector elements to store the sequence.
  • Count the digits and add every digit to the vecor.
  • Reverse the digits vector.
  • Initialise a variable with 0 called next element.
  • Write a loop that iterate till the next element is less than n.
    • Add the last n digits to get the next element.
    • Add the next element to the vector.
  • Return true if the next element is equal to n else false.

Example

Let's see the code.

 Live Demo

#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;
}

Output

If you run the above code, then you will get the following result.

No
Yes
Yes

Conclusion

If you have any queries in the tutorial, mention them in the comment section.

raja
Updated on 09-Apr-2021 12:59:34

Advertisements