Hướng dẫn giải của [200 đề thầy Đức] Bài 9: Tổng các chữ số


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Hướng dẫn giải

Cho số nguyên N, lặp lại việc thay N bằng tổng các chữ số của N cho đến khi N chỉ còn một chữ số. In ra chữ số cuối cùng.

Cách làm
  • Trong khi N có từ 2 chữ số trở lên (tức N >= 10), ta tính tổng các chữ số của N rồi gán lại cho N.
  • Tổng các chữ số của một số: lấy số dư khi chia cho 10 (chính là chữ số hàng đơn vị) rồi cộng dồn, sau đó chia N cho 10 để bỏ chữ số đó đi. Làm cho đến khi số bằng 0.
  • Khi N còn một chữ số thì dừng và in N.

Ví dụ: 98 -> 9 + 8 = 17 -> 1 + 7 = 8. Vì N có thể lên tới 10^9 nên dùng long long cho chắc.

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

int main() {
    int t;
    cin >> t;
    while (t--) {
        long long n;
        cin >> n;
        // Lặp lại: thay n bằng tổng các chữ số của n, đến khi n chỉ còn 1 chữ số
        while (n >= 10) {
            long long tong = 0;
            long long tam = n;
            while (tam > 0) {
                tong += tam % 10;
                tam /= 10;
            }
            n = tong;
        }
        cout << n << "\n";
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.