ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาว่าตัวเลขที่ระบุนั้นเป็น หมายเลข kaprekar หรือไม่ หรือเปล่า
เอาเบอร์. หากำลังสองของจำนวนนั้น แบ่งตัวเลขออกเป็นสองส่วน หากผลรวมของทั้งสองส่วนเท่ากับจำนวนเดิม จะเรียกหมายเลขนั้นว่า เลขคาปรีการ์ .
มาดูขั้นตอนการแก้ปัญหากัน
- เริ่มต้น n.
- หากำลังสองของ n.
- ค้นหาจำนวนหลักในช่องสี่เหลี่ยมของ n และเก็บไว้ในตัวแปร
- หารกำลังสองของ n ด้วย 10, 100, 1000, ฯลฯ.. จนกว่าตัวเลขจะนับ
- ตรวจสอบผลรวมของส่วนใดส่วนหนึ่งนั้นเท่ากับ n หรือไม่
- คืนค่า จริง ถ้าเท่ากัน อย่างอื่น เท็จ .
ตัวอย่าง
มาดูโค้ดกันเลย
#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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น