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

เลข Keith (Keith Number) ใน C++

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

ตัวเลข n เรียกว่า Keith number หากมันปรากฏในลำดับที่สร้างขึ้นจากหลักของมันเอง ลำดับนี้มี n พจน์แรกเป็นหลักของตัวเลข n และพจน์ถัดไปคำนวณได้จากผลรวมของ n พจน์ก่อนหน้า

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

  • กำหนดค่าเริ่มต้นของตัวเลข n
  • กำหนดเวกเตอร์ว่างชื่อ elements เพื่อเก็บลำดับ
  • นับจำนวนหลักและเพิ่มทุกหลักเข้าไปในเวกเตอร์
  • กลับลำดับของเวกเตอร์หลัก
  • กำหนดตัวแปรชื่อ next element เริ่มต้นเป็น 0
  • เขียนลูปที่วนจนกว่า next element จะมากกว่าหรือเท่ากับ n
    • บวก n หลักสุดท้ายเพื่อหา next element
    • เพิ่ม next element เข้าไปในเวกเตอร์
  • คืนค่า true ถ้า next element เท่ากับ n มิฉะนั้น 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

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น