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