Mã bài:
hsg12_2017_b1
Điểm:
1 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Dữ liệu vào:
stdin
Dữ liệu ra:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Golang, Java, Pascal, Perl, Python, Rust
Mỗi số nguyên dương ~N~ đều có thể biểu diễn dưới dạng tích của hai số nguyên dương ~X~, ~Y~ (~N=X \times Y~) sao cho ~X\le Y~. Khi thay ~X~ bởi ~X-1~, ~Y~ bởi ~ Y+1 ~ tiếp tục tính tích của chúng, ta thu được một số nguyên ~T~ (~T ≠ 0~ hoặc ~ T=0~). Nếu kết quả ~ T ≠ 0~, ta tiếp tục thực hiện thay ~X~ bởi ~X-1~, ~Y~ bởi ~Y+1~ và tính tích của chúng, mỗi bước thu được số ~T ~ mới. Phân tích đến khi ~T=0~ thì dừng lại.
Yêu cầu: Cho trước số nguyên dương ~N~ (~1\le N\le 10000~), hãy đếm số lượng các số nguyên ~T~ khác nhau được sinh ra khi phân tích ~ N~.
Dữ liệu vào:
Số ~N~.
Dữ liệu ra:
Xuất ra màn hình một dòng duy nhất ghi số lượng số thu được.
Ví dụ
Dữ liệu vào
12
Dữ liệu ra
6
Giải thích ví dụ
Ví dụ: số 12 có 3 cách phân tích 1*12, 3*4, 2*6.
Số 12 phân tích: 1*12; 3*4; 2*6:
(1-1)*(12+1) = 0; (3-1)*(4+1) = 10;
(2-1)*(6+1) = 7;
Số 7 phân tích: 1*7
(1-1)*(7+1) = 0;
Số 10 phân tích: 2*5; 1*10
(2-1)*(5+1) = 6; (1-1)*(10+1) = 0;
Số 6 phân tích: 2*3; 1*6
(2-1)*(3+1) = 4; (1-1) * (6+1) = 0;
Số 4 phân tích: 2*2; 1*4
(2-1)*(2+1) = 3; (1-1) * (4+1) = 0;
Số 3 phân tích: 1*3
(1-1)*(3+1) = 0;
Các số xuất hiện trong phép biến đổi là: 0; 3; 4; 6; 7; 10. Số lượng số thu được
là 6 số
Bình luận