Time limit: 1.0 / Memory limit: 256M

Point: 6

Ông Pascal xây dựng một kệ tài liệu theo dạng hình tam giác có chiều cao ~h~. Các tầng được đánh số từ ~1, 2, 3, \dots, h~. Tầng ~i~ có ~i~ ngăn được đánh số từ ~1, 2, 3, \dots, i~. Minh họa như hình bên dưới:

Có ~n~ tài liệu được đánh số từ ~1, 2, 3, \dots, n~ được cất vào các ngăn trên kệ theo thứ tự từ trái sang phải và từ trên xuống dưới.

  • Tầng 1: 1
  • Tầng 2: 2, 3
  • Tầng 3: 4, 5, 6
  • Tầng 4: 7, 8, 9, 10
  • ...

Do kệ quá cao nên ông thiết kế một hệ thống robot tự động có thể di chuyển đến ngăn cất tài liệu theo thứ tự ~p~ mà ông cần.

Yêu cầu: Hãy viết chương trình xác định tầng và ngăn cất tài liệu thứ ~p~.

Dữ liệu:

Vào từ tập tin văn bản CASE.INP gồm một số nguyên ~p~ (~1 \le p \le 10^{18}~) là số thứ tự tài liệu cần lấy.

Kết quả:

Ghi ra tập tin văn bản CASE.OUT gồm 2 số nguyên lần lượt là số tầng và số ngăn cất tài liệu, hai số cách nhau một khoảng trắng.

Ví dụ:

CASE.INP:
13
CASE.OUT:
5 3
Giải thích:

Các tài liệu được cất trên kệ lần lượt là:

1
2, 3
4, 5, 6
7, 8, 9, 10
11, 12, 13, 14, 15

Tài liệu thứ 13 được cất ở tầng 5, ngăn 3.

Giới hạn:

  • Subtask 1: 50% số test có ~p \le 10~.
  • Subtask 2: 30% số test có ~p \le 10^{12}~.
  • Subtask 3: 20% số test còn lại không có giới hạn nào thêm.

    Tài liệu tham khảo


LUCKY NUM

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 6

Trong hội trại cuối năm, nhà trường tổ chức trò chơi xổ số may mắn. Thể lệ trò chơi như sau:

Học sinh sẽ chọn cặp số may mắn là cặp số mà tích của chúng có chữ số ở hàng đơn vị bằng với số ~P~ do ban tổ chức công bố.

Ban tổ chức giới hạn phạm vi chọn số bằng 2 số ~L~ và ~R~ (~L < R~). Các số được chọn phải có giá trị từ ~L~ đến ~R~.

Yêu cầu: Hãy viết chương trình xác định số lượng cặp số may mắn khi biết ~L, R~ và ~P~.

Dữ liệu:

Vào từ tập tin văn bản LUCKYNUM.INP gồm 3 dòng:

  • dòng thứ nhất là số ~L~,
  • dòng thứ hai là số ~R~ và
  • dòng thứ ba là số ~P~ (~1 \le L \le R \le 10^9, 0 \le P \le 9~).

Kết quả:

Ghi ra tập tin văn bản LUCKYNUM.OUT một số nguyên duy nhất là số lượng cặp số may mắn.

Ví dụ:

LUCKYNUM.INP:
1
4
4
LUCKYNUM.OUT:
3
Giải thích:

3 cặp số may mắn là ~(1, 4), (2, 2)~ và ~(4, 1)~ vì tích của chúng có hàng đơn vị là 4.

Giới hạn:

  • Subtask 1: 35% số test có ~R \le 1000~.
  • Subtask 2: 15% số test có ~R \le 10^6, P = 5~.
  • Subtask 3: 15% số test có ~P = 5~.
  • Subtask 4: 35% số test còn lại không có giới hạn.

    Tài liệu tham khảo


HOSTING

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 8

Công ty Vinasat X cho thuê máy chủ có ~N~ khách hàng. Mỗi khách hàng đăng ký: ngày bắt đầu thuê (~x_i~), số ngày sử dụng (~d_i~) và dung lượng cần dùng (~k_i~). Ngày bắt đầu chạy máy chủ là ngày 1.

Yêu cầu: Viết chương trình thông báo biến động dung lượng từ ngày bắt đầu thuê (ngày có ~x_i~ nhỏ nhất) cho đến ngày cuối cùng máy chủ được sử dụng. Chỉ in ra tổng dung lượng tại các thời điểm có sự thay đổi.

Dữ liệu:

Vào từ tập tin HOSTING.INP:

  • Dòng đầu ghi số nguyên dương ~N~ (~1 \le N \le 8 \cdot 10^5~).
  • ~N~ dòng tiếp theo, mỗi dòng chứa ~x_i, d_i, k_i~ (~1 \le x_i + d_i \le 10^5, 1 \le k_i \le 10^9~).

Kết quả:

Ghi ra tập tin HOSTING.OUT dãy số biểu diễn sự biến động dung lượng.

Ví dụ 1:

HOSTING.INP:
3
6 2 15
3 6 9
4 5 7
HOSTING.OUT:
9 16 31 16
Giải thích:

Dung lượng thay đổi thành 9 (ngày 3), 16 (ngày 4), 31 (ngày 6) và 16 (ngày 8).

Ví dụ 2:

HOSTING.INP:
3
1 2 5
5 3 7
1 3 9
HOSTING.OUT:
14 9 0 7

Giới hạn:

  • Subtask 1: 40% số test có ~N \le 100; x_i + d_i \le 100~.
  • Subtask 2: 30% số test có ~N \le 2 \cdot 10^4~.
  • Subtask 3: 30% số test còn lại không có giới hạn.

    Tài liệu tham khảo