Đề bài
Cộng tất cả các chữ số của n. Nếu kết quả có nhiều hơn một chữ số, tiếp tục cộng các chữ số của kết quả đó. Lặp lại quá trình này cho đến khi chỉ còn một chữ số.
Cài đặt hàm digital_root(n).
Đầu vào
n: Một số nguyên dương.
Đầu ra
Trả về chữ số cuối cùng còn lại.
Ràng buộc
1 ≤ n ≤ 10¹⁸
Ví dụ
Đầu vào:
n = 999
Kết quả mong đợi:
expected = 9
Đầu vào:
long long n = 999;
Kết quả mong đợi:
long long expected = 9;
Đầu vào:
long n = 999;
Kết quả mong đợi:
long expected = 9;
Giải thích
9 + 9 + 9 = 27, sau đó 2 + 7 = 9.
Đầu vào:
n = 38
Kết quả mong đợi:
expected = 2
Đầu vào:
long long n = 38;
Kết quả mong đợi:
long long expected = 2;
Đầu vào:
long n = 38;
Kết quả mong đợi:
long expected = 2;
Giải thích
3 + 8 = 11, sau đó 1 + 1 = 2.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Cộng các chữ số lặp đi lặp lại rồi cuối cùng số sẽ co lại còn 1 chữ số.
Gợi ý 2
Bạn có thể mô phỏng quá trình cộng lặp cho đến khi giá trị nhỏ hơn 10.
Gợi ý 3
Hãy chú ý với đầu vào rất lớn; thao tác chính là duyệt qua các chữ số nhiều lần.
Độ phức tạp mong đợi
thời gian O(d log n), bộ nhớ phụ O(1)