Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หมายเลข Keith ใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ตรวจสอบว่าตัวเลขที่ระบุนั้นเป็น หมายเลข Keith หรือไม่ หรือเปล่า

หมายเลข n เรียกว่าหมายเลข Keith หากปรากฏในลำดับที่สร้างโดยใช้ตัวเลข ลำดับมี n เทอมแรกเป็นตัวเลขของตัวเลข n และคำศัพท์อื่นๆ จะถูกประเมินซ้ำเป็นผลรวมของ n เทอมก่อนหน้า

มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นหมายเลข n.
  • เริ่มต้นองค์ประกอบเวกเตอร์ว่างเพื่อจัดเก็บลำดับ
  • นับตัวเลขและเพิ่มทุกหลักใน vecor
  • ย้อนกลับเวกเตอร์หลัก
  • เริ่มต้นตัวแปรที่มี 0 เรียกว่าองค์ประกอบถัดไป
  • เขียนลูปที่วนซ้ำจนกว่าองค์ประกอบถัดไปจะน้อยกว่า n.
    • เพิ่ม n หลักสุดท้ายเพื่อรับองค์ประกอบถัดไป
    • เพิ่มองค์ประกอบถัดไปให้กับเวกเตอร์
  • คืนค่า จริง หากองค์ประกอบถัดไปเท่ากับ n อย่างอื่นเป็นเท็จ

ตัวอย่าง

มาดูโค้ดกันเลย

#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

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น