ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่ค้นหาว่าตัวเลขที่ระบุนั้นเป็น หมายเลข 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
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น