ปัญหา
ให้ตัวเลข n ต้องการหาตัวเลข x ที่ทำให้ x + ผลรวมหลักของ x = n
ตัวอย่าง: n = 21 คำตอบคือ x = 15 เพราะ 15 + (1 + 5) = 21
วิธีแก้ปัญหา
ใช้วิธีตรวจสอบทีละตัว (Brute Force) ตั้งแต่ 1 ถึง n:
- วนลูป i จาก 1 ถึง n
- คำนวณผลรวมหลักของ i
- ถ้า i + digitSum(i) == n คืนค่า i
- ถ้าไม่พบ คืนค่า -1
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int getDigitSum(int n) {
int sum = 0;
while (n) {
sum += n % 10;
n /= 10;
}
return sum;
}
int getNumber(int n) {
for (int i = 0; i <= n; i++)
if (i + getDigitSum(i) == n)
return i;
return -1;
}
int main() {
int n = 21;
cout << "The value of x is: " << getNumber(n);
return 0;
}
ผลลัพธ์
The value of x is: 15