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
结论
如果您对本教程有任何疑问,请在评论区留言。
广告