Cho một số n, cần tìm số x sao cho x + tổng các chữ số của x = n. Ví dụ với n = 21, ta có x = 15 vì 15 + 1 + 5 = 21.
Giải thuật
Duyệt từ 1 đến n, với mỗi số i tính tổng chữ số của i. Nếu i + tổng chữ số(i) = n thì trả về i. Nếu không tìm thấy trả về -1.
Ví dụ minh họa
#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 << "Gia tri cua x la: " << getNumber(n);
}
Kết quả
Gia tri cua x la: 15