Điểm:
400 (p)
Thời gian:
1.0s
Bộ nhớ:
640M
Input:
bàn phím
Output:
màn hình
Cho một số \(n\). Ta định nghĩa chỉ số \(\text{UQ}\) của \(n\) được tính như sau:
- Nếu \(n=1\) hoặc \(n\) là số nguyên tố thì \(\text{UQ}(n)=n\)
- Nếu \(n\) là hợp số thì \(\text{UQ}(n)\) bằng tổng \(\text{UQ}\) của tất cả ước khác \(n\) của \(n\).
Yêu cầu: Cho số nguyên dương \(n\), tính \(\text{UQ}(n)\).
Input
- Gồm nhiều dòng, mỗi dòng gồm duy nhất \(1\) số \(n\) có giá trị không quá một tỉ. Đầu vào kết thúc bởi số \(0\). Dữ liệu đảm bảo sẽ không quá \(10\) trường hợp cần kiểm tra.
Output
- Mỗi dòng xuất ra \(\text{UQ}(n)\) tương ứng.
Example
Test 1
Input
6
20
36
0
Output
6
19
50
Bình luận
cho một số hint đơn giản nè:
==>Giải: đệ quy có nhớ:
VD: Ta đã biết UQ(9)=4, UQ(6)=6, UQ(4)=3
UQ(36)
=UQ(18)+UQ(12)+UQ(9)+UQ(6)+UQ(4)+UQ(3)+UQ(2)+UQ(1)
= (UQ(9)+UQ(6)+UQ(3)+UQ(2)+UQ(1)) + (UQ(6)+UQ(4)+UQ(3)+UQ(2)+UQ(1)) +4+6+3+3+2+1
=4+6+3+2+1+6+3+3+2+1+4+6+3+3+2+1
=50
Rõ ràng là nhanh hơn hẳn
Bonus: Các bạn có thể dùng phân tích nguyên tố để tính UQ nhanh không?
Bài này rất hay nhưng mà cần sol ai viết sol đc ko???
giải thích cho những ai chưa hiểu test: