PHÂN TÍCH SỐ

Mỗi một số nguyên dương đều có thể biểu diễn dưới dạng tích của 2 số nguyên dương ~X,Y~ sao cho ~X≤Y~. Nếu như trong phân tích này ta thay ~X~ bởi ~X-1~ còn ~Y~ bởi ~Y+1~ thì sau khi tính tích của chúng ta thu được hoặc là một số nguyên dương mới hoặc là số 0.

Ví Dụ: Số 12 có 3 cách phân tích ~1×12, 3×4, 2×6~. Cách phân tích thứ nhất cho ta tích mới là 0: ~(1-1)×(12+1) = 0~, cách phân tích thứ hai cho ta tích mới 10: ~(3-1)×(4+1) = 10~, còn cách phân tích thứ ba cho ta ~7: (2-1)×(6+1)=7~. Nếu kết quả là khác 0 ta lại lặp lại thủ tục này đối với số thu được. Rõ ràng áp dụng liên tiếp thủ tục trên, cuối cùng ta sẽ đến được số 0, không phụ thuộc vào việc ta chọn cách phân tích nào để tiếp tục

Yêu cầu: Cho trước số nguyên dương ~N~ ~(1≤N≤10^5)~, hãy đưa ra tất cả các số nguyên dương khác nhau có thể gặp trong việc áp dụng thủ tục đã mô tả đối với ~N~.

Dữ liệu vào: Số nguyên dương ~N~.

**Kết quả: **

  • Dòng đầu tiên ghi ~K~ là số lượng số tìm được
  • Dòng tiếp theo chứa ~K~ số tìm được theo thứ tự tăng dần bắt đầu từ số 0.

Ví dụ:

Input:

12 

Output:

6
0 3 4 6 7 10 

**Ràng buộc: **

  • Có 50% số test ứng với 60% số điểm của bài có ~1≤N≤10^3~.
  • Có 50% số test ứng với 40% số điểm của bài có ~10^3≤N≤10^5~.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. nguyenvuquang (12/18)
  2. huy_notcoding (9/14)
  3. ilpnvm (9/18)
Trong 7 ngày
  1. ducchinh (169/223)
  2. hienpham (163/213)
  3. bichngoc (150/213)
Trong 30 ngày
  1. ducchinh (169/223)
  2. hienpham (163/213)
  3. tgtam2022 (150/369)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 37713

Lưu Hải Phong - 2020
[email protected]