Phân tích số

Xem PDF

Nộp bài


Điểm: 10 (thành phần)
Thời gian: 1.0s
Bộ nhớ: 1G

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal

Lần trước Tom đã giải được bài toán: “Tìm cách khai triển số tự nhiên \(N\) thành tổng các số tự nhiên khác nhau sao cho tích của chúng lớn nhất”. Lần này, Tom gặp bài toán cũng liên quan đến phân tích số tự nhiên, với nội dung như sau: Cho trước số tự nhiên \(N\ (N\leq 10^3)\). Tính số cách phân tích \(N\) thành tổng của ba số tự nhiên khác nhau và liệt kê các số tự nhiên đó. Em hãy giúp Tom giải bài toán trên.

Yêu cầu: Gọi \(Q\) là số cách phân tích số \(N\) thành tổng của ba số tự nhiên khác nhau. Tính số cách \(Q\) và liệt kê các số tự nhiên đó. Nếu không phân tích được thì ghi \(-1\).

Input: File văn bản PTICH.INP gồm một số \(N\).

Output: Ghi ra file văn bản PTICH.OUT

  • Dòng đầu ghi số \(Q\);
  • Dòng thứ hai trở đi liệt kê các số theo từng cách (mỗi số cách nhau ít nhất một dấu cách).
  • Nếu không phân tích được thì ghi \(-1\).

Ví dụ:

SAMPLE INPUT

8

SAMPLE OUTPUT

2
1 2 5
1 3 4

Ghi chú: Gọi \(i,\ j\) và \(k\) là ba số tự nhiên có tổng đúng bằng \(N\), với \(i < j < k\); \(0 < i,\ j,\ k < 10^3\).

Ràng buộc:

  • Có \(50\%\) số test ứng với \(50\%\) số điểm có \(0 < N\leq 10^2\);
  • Có \(50\%\) số test còn lại ứng với \(50\%\) số điểm có \(10^2 < N\leq 10^3\).