Các số có tổng các chữ số bằng 10 là
19, 28, 37, 46, 55, 64, 73, 82, 91, v.v.,
Nếu bạn quan sát dãy số, mỗi số tăng lên 9. Có những số trong dãy số trên có tổng các chữ số không bằng 10 trong khi tăng thêm 9. Nhưng, bạn sẽ nhận được tất cả các số có tổng các chữ số bằng 10.
Vì vậy, chúng ta có thể có một vòng lặp tăng thêm 9 và kiểm tra tổng các chữ số và tìm số thứ n. Hãy xem một số ví dụ
Đầu vào
3 7
Kết quả đầu ra
37 73
Thuật toán
- Khởi tạo số n
- Khởi tạo bộ đếm thành 0.
- Viết một vòng lặp lặp lại từ 19
- Nếu tổng các chữ số của số hiện tại là 10, hãy tăng bộ đếm lên 1.
- Nếu bộ đếm bằng n thì trả về số hiện tại.
- Tăng biến lặp lại thêm 9.
Thực hiện
Sau đây là cách thực hiện thuật toán trên trong C ++
#include <bits/stdc++.h> using namespace std; int findNthNumber(int n) { int count = 0, i = 19; while (true) { int sum = 0; for (int number = i; number > 0; number = number / 10) { sum = sum + number % 10; } if (sum == 10) { count++; } if (count == n) { return i; } i += 9; } return -1; } int main() { int n = 7; cout << findNthNumber(7) << endl; return 0; }
Đầu ra
Nếu bạn chạy đoạn mã trên, thì bạn sẽ nhận được kết quả sau.
73