Tính số chữ số của các số nguyên dương liên tiếp

11
Lập trình C++

Yêu cầu của bài toán: Viết các số nguyên liên tiếp từ 1 đến n (n <= 106) Hãy cho biết tổng số có bao nhiêu chữ số trong dãy này?

Ví dụ: n = 10. Viết liên tiếp ta được dãy số: 12345678910. Tổng số chữ số đã viết là: 11

Code tham khảo:

#include <iostream>
using namespace std;
int dem(long so) {
    int T = 0;
    while (so != 0) {
        so /= 10;
        T++;
    }
    return T;
}
int main() {
    long a;
    freopen("DCOUNT.INP", "r", stdin);
    freopen("DCOUNT.OUT", "w", stdout);
    cin >> a;
    int T = 0;
    for (int i = 1; i <= a; i++) {
        T += dem(i);
    }
    cout << T;
    return 0;
}