Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số thứ N có tổng chữ số bằng 10 C++

Dãy số có tổng chữ số = 10: 19, 28, 37, 46, 55, 64, 73, 82, 91, 109, 118...

Quan sát: hiệu giữa các số liên tiếp thường là 9 (nhưng không phải lúc nào cũng đúng do carry).

Thuật toán

  • Duyệt từ 19, bước nhảy 9.
  • Kiểm tra tổng chữ số == 10.
  • Đếm đến khi tìm được số thứ N.

Triển khai C++

#include <bits/stdc++.h>
using namespace std;

int digitSum(int n) {
    int s = 0;
    while (n) { s += n % 10; n /= 10; }
    return s;
}

int nthDigitSum10(int n) {
    int count = 0;
    for (int i = 19; ; i += 9)
        if (digitSum(i) == 10 && ++count == n) return i;
    return -1;
}

int main() {
    cout << nthDigitSum10(7) << endl; // 73
    return 0;
}

Kết quả

73