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 次瀏覽

開啟你的 職業生涯

完成課程取得認證

開始
廣告
© . All rights reserved.