Ghép số (THTA Vòng Khu vực 2021)

Xem PDF

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho hai số tự nhiên \(A\)\(B\). Có vô số mảnh giấy hình chữ nhật trên đó ghi số \(A\) hoặc số \(B\). Việc của các bạn học sinh là tìm cách dùng một vài mảnh giấy trong đó và xếp chúng lại với nhau theo thứ tự để số tạo thành sau khi ghép (đọc từ trái sang phải) là số nhỏ nhất mà chia hết cho \(9\). Điều kiện bắt buộc là mỗi loại số \(A\)\(B\) đều phải được sử dụng ít nhất một lần.

Input

  • Dòng thứ nhất chứa số tự nhiên \(A\).
  • Dòng thứ hai chứa số tự nhiên \(B\).

Output

  • In ra màn hình một số duy nhất là kết quả của bài toán.

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(A, B < 10\).
  • Subtask \(2\) (\(30\%\) số điểm): \(A\)\(B\) có cùng số lượng chữ số.
  • Subtask \(3\) (\(20\%\) số điểm): \(A, B\leq 10000\), \(A\)\(B\) có số lượng chữ số khác nhau.

Example

Test 1

Input
9
3
Output
3339
Note

Số nhỏ nhất chia hết cho \(9\) được ghép từ số \(9\) và số \(3\)\(3339\).

Test 2

Input
14
2
Output
1422
Note

Số nhỏ nhất chia hết cho \(9\) được ghép từ số \(14\) và số \(2\)\(1422\).


Bình luận


  • 3
    longkold00    1:50 p.m. 10 Tháng 10, 2021

    Mình sẽ chia sẻ 1 số mẹo làm bằng quay lui:

    1. các số liệu nhập vào sẽ là dạng string để dễ thao tác hơn.
    2. các bạn sẽ tạo 1 hàm tính tổng các chữ số của 2 số đã cho
    3. các bạn tạo 1 hàm so sánh trả về số nhỏ hơn theo nguyên tắc ưu tiên: chữ số '0' ở đầu => trả về số còn lại, số lượng chữ số, và so sánh từng chữ số bắt đầu từ vị trị 0->
    4. các bạn sử dụng quay lui để tìm ra các số thỏa mãn yêu cầu đề bài, và so sánh với 1 số rất lớn vd m="100000000000000000000000000000000000000000000000". 1 lưu ý là xét từng tổng số lần xuất hiện của các số từ >=2 đến khoảng 10.

    đây là code của mình,các bạn có thể tham khảo note để hiểu rõ hơn

    1 phản hồi