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