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

ค้นหาหมายเลข X ที่มีผลรวมของตัวเลขเท่ากับ N ใน C++


ในบทช่วยสอนนี้ เราจะค้นหาตัวเลขที่มีตัวเลขบางตัวซึ่งเท่ากับตัวเลขที่ระบุ N

แนวคิดง่ายๆ เราจะตรวจสอบตัวเลข 100 ด้านซ้ายและขวาของตัวเลขที่ระบุ มันจะไม่ระบุขอบเขตนั้นเป็น N ≤ 1000000000 และผลรวมจะไม่เกิน 100

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

  • เริ่มต้นหมายเลข

  • เขียนวนซ้ำ 100 ครั้ง

    • รับค่า n - i และ n + i

    • หาผลรวมของตัวเลขแล้วบวกเข้าไป

    • หากใครมีค่าเท่ากับ N ให้พิมพ์

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
int digitsSum(int n) {
   int sum = 0;
   while (n) {
      sum += n % 10;
      n /= 10;
   }
   return sum;
}
void findX(long int n) {
   bool is_found = false;
   for (int i = 0; i <= 100; i++) {
      long int valueOnLeft = abs(n - i) + digitsSum(abs(n - i));
      long int valueOnRight = n + i + digitsSum(n + i);
      if (valueOnLeft == n) {
         is_found = true;
         cout << abs(n - i) << " ";
      }
      if (valueOnRight == n) {
         is_found = true;
         cout << (n + i) << " ";
      }
   }
   if (!is_found) {
      cout << "No numbers found";
   }
   cout << endl;
}
int main() {
   int n = 89;
   findX(n);
   return 0;
}

ผลลัพธ์

หากคุณรันโปรแกรมข้างต้น คุณจะได้ผลลัพธ์ดังต่อไปนี้

76

บทสรุป

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