Trạng thái

Đề bài

Thầy giáo giao cho Lam một bài toán đơn giản. Cho một số nguyên dương \(N\), nhiệm vụ của Lam là tìm tất cả các dãy số nguyên dương liên tiếp (có ít nhất 2 phần tử) sao cho tổng các phần tử trong dãy bằng \(N\).

Dữ liệu vào

  • Một dòng duy nhất chứa số nguyên dương \(N\) \((1 \leq N \leq 10^6)\).

Dữ liệu ra

  • Nếu tồn tại, in ra mỗi dòng 2 số nguyên là số đầu tiên và số cuối cùng của mỗi dãy liên tiếp tìm được, cách nhau một khoảng trắng.
  • Các dãy được in theo thứ tự từ điển tăng dần (dựa vào số bắt đầu của dãy).
  • Nếu không có dãy nào thỏa mãn, in ra -1.

Giới hạn

  • \(1 \leq N \leq 10^6\)

Sample Input 1

5

Sample Output 1

2 3

Sample Input 2

15

Sample Output 2

1 5
4 6
7 8

Sample Input 3

32

Sample Output 3

-1

Giải thích

  • Với \(N = 5\): Chỉ có một dãy liên tiếp gồm ít nhất 2 phần tử là \([2, 3]\).
  • Với \(N = 15\): Có 3 dãy thỏa mãn là \([1,2,3,4,5]\), \([4,5,6]\), \([7,8]\).
  • Với \(N = 32\): Không tồn tại dãy liên tiếp nào có tổng bằng \(32\).
Thông tin
Thông tin bài tập
Gửi bài giải
Điểm
100
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
250 M
I/O
stdin -> stdout
Tác giả
Loại đề bài
Chưa xác định
Ngôn ngữ cho phép
C, C#, C++, Java, Pascal, Python, Text