Ở đây chúng ta sẽ thấy một bài toán, nơi chúng ta lấy một số n, chúng ta phải tìm một giá trị khác x, sao cho x + tổng chữ số của x bằng số cho trước n. Giả sử giá trị n là 21. Chương trình này sẽ trả về một số x = 15, vì 15 + tổng chữ số của 15, tức là 15 + 1 + 5 = 21 = n.
Để giải quyết bài toán này, chúng ta phải làm theo cách tiếp cận đơn giản. Chúng ta sẽ lặp từ 1 đến n, ở mỗi lần lặp, chúng ta sẽ xem nếu tổng của số và tổng chữ số của nó bằng số cho trước thì dừng, ngược lại tiếp tục.
Ví dụ
#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); }
Kết quả
The value of x is: 15