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

Tổng chữ số lặp lại cho đến khi ra 1 chữ số C++


Cho số N, lặp lại: cộng các chữ số → nếu kết quả ≥ 10 thì tiếp tục cộng chữ số của kết quả... cho đến khi được 1 chữ số (0-9).

Đây chính là Digital Root (Rễ số).

Công thức toán học O(1)

dr(n) = 0                    nếu n = 0
dr(n) = 9                    nếu n % 9 == 0
dr(n) = n % 9                ngược lại

Chương trình C++

#include <iostream>
using namespace std;

int digitalRoot(long long n) {
    if (n == 0) return 0;
    return (n % 9 == 0) ? 9 : (n % 9);
}

int main() {
    long long nums[] = {14520, 999, 38, 0, 123456789};
    for (long long n : nums) {
        cout << n << " -> " << digitalRoot(n) << "\n";
    }
    return 0;
}

Kết quả

14520 -> 3
999 -> 9
38 -> 2
0 -> 0
123456789 -> 9