C++ 中的凯斯数


在本教程中,我们将编写一个程序,检查给定数字是否为凯斯数

如果数字 n 出现在使用其数字生成的序列中,则称为凯斯数。该序列的第一个 n 个项为数字 n 的数字,其他项通过前一个 n 项的和递归计算。

让我们看看解决问题的步骤。

  • 初始化数字 n。
  • 初始化一个空向量 elements 来存储序列。
  • 计算位数并将每个位数添加到向量中。
  • 反转数字向量。
  • 初始化一个变量,其中 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

结论

如果您对本教程有任何疑问,请在评论区留言。

更新于: 09-4 月 -2021

314 次浏览

开启你的 职业生涯

完成课程取得认证

开始
广告