ZEROPATH - Phân tích số
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 1.0 giây
Giới hạn bộ nhớ: 128 megabyte
Đăng bởi: nguyenxuanhaa3

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<=100000) , 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 :     1 dòng chứa số nguyên dương N .

Kết quả :     Gồm 2 dòng

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 .

Lưu ý :        Có thể có số xuất hiện trên nhiều đường biến đổi khác nhau , nhưng nó chỉ được tính một lần trong kết quả .

Ví dụ

  • input
    12
    output
    6
    0 3 4 6 7 10
Back to Top