Gửi bài giải
Điểm:
10,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
1G
Input:
stdin
Output:
stdout
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT
Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài
An có một sợi dây có độ dài ~n~. An thực hiện ~k~ lần cắt dây như sau:
- Mỗi lần, chọn đoạn dây dài nhất trong các đoạn hiện có.
- Cắt thành 2 đoạn dây theo cách sau:
- Nếu đoạn dây có độ dài chẵn là ~2u~, cắt thành hai đoạn có độ dài ~u~.
- Nếu đoạn dây có độ dài lẻ là ~2u + 1~, cắt thành hai đoạn có độ dài là ~u~ và ~u + 1~.
Sau ~k~ lần, An có tổng cộng ~k~ đoạn dây.
Yêu cầu:
Em hãy cho biết, sau ~k~ lần cắt:
- Độ dài đoạn dây dài nhất là bao nhiêu?
- Số lượng đoạn dài nhất An có là bao nhiêu?
INPUT
- Dòng đầu tiên chứa số nguyên dương ~n~ ~(2 \leq n \leq 10^{18})~.
- Dòng thứ hai chứa số nguyên dương ~k~ ~(1 \leq k \leq n - 1)~
OUTPUT
- Một dòng duy nhất chứa ~2~ số nguyên dương là độ dài đoạn dây ngắn nhất và số lượng đoạn dài nhất mà An có sau ~k~ lượt cắt.
SAMPLE INPUT
100
5
SAMPLE OUTPUT
25 2
Giải thích
- Lần cắt 1 có 2 đoạn:
50, 50
- Lần cắt 2 có 3 đoạn:
25, 25, 50
- Lần cắt 3 có 4 đoạn:
25, 25, 25, 25
- Lần cắt 4 có 5 đoạn:
12, 13, 25, 25, 25
- Lần cắt 5 có 6 đoạn:
12, 13, 12, 13, 25, 25
SUBTASKS
Subtask | Điểm | Ràng buộc |
---|---|---|
1 | 75% | ~n, k \leq 10^4~ |
2 | 25% | ~n, k \leq 10^{18}~ |
Bình luận