JOI 2020 - Tenkey

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

JOI có một bàn phím số với các phím mang chữ số từ \(0\) đến \(9\), được bố trí như hình dưới đây. Lưu ý rằng không có phím nào ở ngay dưới phím \(2\) hoặc phím \(3\).

Trên bàn phím có một con trỏ chỉ vào một phím. Ban đầu con trỏ chỉ vào phím \(0\).

Trong mỗi thao tác, JOI có thể chọn một trong hai việc sau:

  • Di chuyển con trỏ sang một phím kề với phím hiện tại theo hướng lên, xuống, trái hoặc phải. Không được di chuyển đến vị trí không có phím.
  • Nhấn phím mà con trỏ đang chỉ vào để nhập chữ số trên phím đó. Nếu trước đó đã nhập các chữ số, chữ số mới được thêm ngay bên phải dãy chữ số đã nhập.

JOI muốn dùng bàn phím này để nhập một số nguyên dương có số dư bằng \(R\) khi chia cho \(M\). Vì thao tác trên bàn phím mất thời gian, JOI muốn dùng ít thao tác nhất có thể.

Cho \(M\)\(R\), hãy tìm số thao tác ít nhất JOI cần thực hiện.

Dữ liệu vào

Dữ liệu được cho từ đầu vào chuẩn gồm một dòng chứa hai số nguyên \(M\)\(R\).

Dữ liệu ra

In ra một dòng chứa số thao tác ít nhất để nhập một số nguyên dương có số dư bằng \(R\) khi chia cho \(M\).

Ràng buộc

  • \(2 \le M \le 100\,000\).
  • \(1 \le R < M\).
  • Tất cả các giá trị đầu vào đều là số nguyên.

Phân nhóm

  1. (30 điểm) \(M=100\,000\).
  2. (70 điểm) Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
100000 13
Output
5
Giải thích

Có thể nhập \(13\) bằng \(5\) thao tác sau. Không thể nhập một số thỏa mãn yêu cầu bằng \(4\) thao tác trở xuống, nên kết quả là \(5\).

  1. Di chuyển con trỏ lên trên, đến phím \(1\).
  2. Nhấn phím để nhập \(1\).
  3. Di chuyển con trỏ sang phải, đến phím \(2\).
  4. Di chuyển con trỏ sang phải, đến phím \(3\).
  5. Nhấn phím để nhập thêm \(3\); dãy chữ số đã nhập trở thành \(13\).

Ví dụ 2

Input
4 3
Output
3
Giải thích

Có thể nhập \(11\) bằng \(3\) thao tác. Lưu ý rằng để nhập \(3\) cần ít nhất \(4\) thao tác, nên đó không phải là cách tối ưu.

Nguồn

Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: