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

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


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

บทสรุป

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