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

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

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

นำตัวเลขมายกกำลังสอง แล้วแบ่งผลลัพธ์เป็นสองส่วน ถ้าผลรวมของสองส่วนนั้นเท่ากับตัวเลขเดิม ตัวเลขนั้นจะเรียกว่า kaprekar number

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

  • กำหนดค่าเริ่มต้นของ n
  • หาค่ายกกำลังสองของ n
  • หาจำนวนหลักของค่ายกกำลังสองและเก็บไว้ในตัวแปร
  • หารค่ายกกำลังสองของ n ด้วย 10, 100, 1000, ฯลฯ จนครบจำนวนหลัก
    • ตรวจสอบว่าผลรวมของส่วนใดส่วนหนึ่งเท่ากับ n หรือไม่
  • คืนค่า True ถ้าเท่ากัน มิฉะนั้น False

ตัวอย่างโค้ด

#include<bits/stdc++.h> 
using namespace std; 

bool isKaprekarNumber(int n) { 
    if (n == 1) { 
        return true; 
    } 
    int nSquare = n * n, digitsCount = 0; 
    while (nSquare) { 
        digitsCount++; 
        nSquare /= 10; 
    } 
    nSquare = n * n; 
    for (int i = 1; i < digitsCount; i++) { 
        int parts = pow(10, i); 
        if (parts == n) { 
            continue; 
        } 
        int sum = nSquare / parts + nSquare % parts; 
        if (sum == n) { 
            return true; 
        } 
    } 
    return false; 
} 

int main() { 
    int n = 25; 
    string result = isKaprekarNumber(n) ? "True" : "False"; 
    cout << result << endl; 
    return 0; 
}

ผลลัพธ์

หากรันโค้ดด้านบน จะได้ผลลัพธ์ดังนี้:

False

สรุป

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