Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Ước bội 4

100 điểm

Bạn được cho 2 số nguyên \(a, b\).

Hãy làm việc này sau đây cho đến khi một trong hai số \(a, b\) là số 0 :

  • Nếu \(b \leq a\) thì lấy a trừ đi b \((a = a - b)\).
  • ngươc lại lấy b trừ a\((b = b - a)\).

Nhập vào 2 số \(a, b\). Hãy đếm số lần bạn làm công việc trên

Input

  • \(t (t \leq 1000)\) - số test

  • \(t\) dòng, mỗi dòng gồm 2 số nguyên dương \(a, b (a, b \leq 1000000000)\)

Output

  • \(t\) dòng, số lần thực hiện để một trong 2 số \(a, b\) có 1 số là số 0

Example

Test 1

Input
1
4 17
Output
8
Note

\((4\ 17) \rightarrow (4\ 13) \rightarrow (4\ 9) \rightarrow (4\ 5) \rightarrow (4\ 1) \rightarrow (3\ 1) \rightarrow (2\ 1) \rightarrow (1\ 1) \rightarrow (0\ 1)\)

root

Vượt sông

100 điểm

Nhóm bạn của Tuấn đang đi dã ngoại và bất ngờ gặp một con sông lớn. Tổng cộng có \(n\) người trong nhóm, bao gồm cả Tuấn. May mắn thay, có một con thuyền nhỏ ở ngay bờ sông. Con thuyền này có thể chở một lúc một nhóm người với tổng trọng lượng tối đa là \(k\) kilogam.

Để tính toán số lượt di chuyển, Tuấn đã thống kê trọng lượng của mọi người trong nhóm. Kết quả cho thấy mỗi người có trọng lượng là 50 hoặc 100 kilogam. Bây giờ, Tuấn muốn tìm số lượt di chuyển tối thiểu để đưa tất cả mọi người sang bờ bên kia. Con thuyền cần ít nhất một người để điều khiển nó từ bờ này sang bờ kia. Mỗi lần di chuyển, thuyền có thể chở bất kỳ số người nào (lớn hơn 0), miễn là tổng trọng lượng của họ không vượt quá \(k\).

Ngoài ra, Tuấn còn thắc mắc có bao nhiêu cách để đưa mọi người sang bờ bên kia trong số lượt di chuyển tối thiểu đó. Hai cách được coi là khác nhau nếu trong một lượt di chuyển nào đó, tập hợp người trên thuyền cách này khác tập hợp người trên thuyền của cách kia. Tuy nhiên, không phải lúc nào Tuấn cũng thắc mắc câu hỏi này, chính vì vậy, Tuấn đã cung cấp một số nguyên dương \(T\) \((1 \leq T \leq 2)\). Nếu \(T = 2\), Tuấn sẽ thắc mắc số lần di chuyển ít nhất và số cách để đưa sang bờ bên kia với số lần di chuyển ít nhất. Nếu \(T = 1\), Tuấn chỉ hỏi rằng số lượt di chuyển ít nhất là bao nhiêu.

Yêu cầu: Hãy giúp Tuấn giải quyết bài toán này.

Input

  • Dòng đầu tiên chứa số nguyên dương \(T\) \((1 \leq T \leq 2)\).
  • Dòng đầu tiên chứa hai số nguyên \(n, k\) (\(1 \le n \le 50, 1 \le k \le 5000\)) lần lượt là số người trong nhóm và giới hạn trọng lượng của thuyền.
  • Dòng tiếp theo chứa \(n\) số nguyên là trọng lượng của từng người, mỗi người có trọng lượng là 50 hoặc 100 kilogam.
  • Bạn có thể coi Tuấn và các bạn của anh ấy được đánh số theo một thứ tự nào đó.

Output

  • Dòng đầu tiên in ra một số nguyên là số lượt di chuyển tối thiểu. Nếu không thể đưa tất cả mọi người sang bờ bên kia, in ra \(-1\).
  • Nếu \(T = 2\), in ra dòng thứ hai chính là phần dư của số cách di chuyển trong số lượt tối thiểu sau khi chia cho \(1000000007\) (\(10^9 + 7\)). Nếu không thể di chuyển, in ra \(0\).

Example

Test 1

Input
1
1 50
50
Output
1
Note

Với 3 người (hai người 50kg và một người 100kg) và thuyền 100kg:

  • Lượt 1: Chở hai người 50kg sang bờ.
  • Lượt 2: Một người 50kg quay lại.
  • Lượt 3: Chở người 100kg sang.
  • Lượt 4: Một người 50kg quay lại.
  • Lượt 5: Hai người 50kg còn lại sang bờ.

Tổng cộng 5 lượt. Có 2 cách để chọn người 50kg quay lại ở lượt 2, dẫn đến 2 cách khác nhau.

Test 2

Input
2
3 100
50 50 100
Output
5
2

Test 3

Input
2
2 50
50 50
Output
-1
0

Scoring

  • Subtask 1 (20% số điểm) : \(T = 1\), tất cả người trên thuyền đều có trọng lượng bằng nhau.
  • Subtask 2 (20% số điểm) : \(T = 1, n \leq 3\).
  • Subtask 3 (20% số điểm) : \(T = 1, n \leq 10\).
  • Subtask 4 (20% số điểm) : \(T = 2, n \leq 100\).
  • Subtask 5 (20% số điểm) : không có ràng buộc gì thêm.

root

Khoảng cách số

100 điểm

Hôm nay là ngày đầu tiên đi học của Sơn, ở trường cô giáo dạy cho Sơn về các phép toán cộng trừ giữa các con số. Một kiến thức mới khiến Sơn cảm thấy rất hào hứng đó là phép toán tính khoảng cách hai số. Khoảng cách 2 số được xác định bằng tổng chênh lệch giữa các chữ số tương ứng của 2 số đó. Nếu 1 số có số lượng chữ số ít hơn số còn lại thì ta xem như thêm các số 0 ở phía trước.

Ví dụ:

  • Khoảng cách hai số 4561 và 3278 bằng \(|4-3|+|5-2|+|6-7|+|1-8|=12\).

  • Khoảng cách hai số 32 và 5678 bằng \(|0-5|+|0-6|+|3-7|+|2-8|=21\).

Bố của Sơn muốn kiểm tra xem con mình có khả năng tính toán siêu cấp hay không nên đã đưa ra một vấn đề liên quan đến phép toán khoảng cách hai số. Cho hai số nguyên dương \(L,R\) hãy tính tổng khoảng cách của tất cả cặp số \((A,B)\) thỏa mãn \(L\leq A\neq B\leq R\). Tuy là một người ra đề bài nhưng bố Sơn cũng không biết kết quả là bao nhiêu, vì vậy nhờ bạn hãy tính toán kết quả chia lấy dư cho \(10^9+7\) của bài toán trên và gửi lại cho bố Sơn.

Input

  • Một dòng duy nhất gồm \(2\) số nguyên dương \(L,R\) (\(L\leq R\leq 10^{50000}\)).

Output

  • In ra số nguyên là kết quả bài toán chia lấy dư cho \(10^9+7\).

Example

Test 1

Input
288 291
Output
76

Scoring

  • Subtask 1 (\(25\%\)): \(L,R\leq 10000\).

  • Subtask 2 (\(30\%\)): \(L,R\leq 10^{100}\).

  • Subtask 3 (\(45\%\)): Không có giới hạn gì thêm.

root

Phát quà

100 điểm

Thầy Minh tổ chức buổi phát thưởng cho các học sinh đạt giải trong kỳ thi học sinh giỏi môn Tin. Thầy có X chiếc bút và Y quyển tập, thầy sẽ phát hết các phần thưởng cho các bạn học sinh và mong muốn số chiếc bút và số quyển tập được chia đều cho các bạn.

Yêu cầu: Cho hai số nguyên \(X\) và \(Y\). Hãy tìm tất cả các cách phát quà thỏa mãn điều kiện của thầy Minh.

Input

Vào từ bàn phím gồm một dòng chứa \(2\) số nguyên dương \(X, Y\).

Dữ liệu đảm bảo: \(1 \le X, Y \le 10^{14}\).

Output

Ghi ra màn hình một số nguyên là số cách phát quà thỏa điều kiện đề bài.

Example

Test 1

Input
4 6
Output
2

Scoring

  • Subtask 1: \(60\%\) số test ứng với \(1 \le X, Y \le 10^6\)
  • Subtask 2: \(40\%\) số test không có ràng buộc gì thêm.
Xem thêm