Ghép số (THTA Vòng Tỉnh/TP 2022)

Xem PDF

Điểm: 200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Ghép số (THTA Vòng Tỉnh/TP 2022)

Cho hai số tự nhiên \(A\)\(B\) sao cho mỗi số đều chỉ gồm các chữ số đôi một khác nhau. Lần lượt lấy các chữ số của \(A\)\(B\) ghép lại để tạo thành số \(C\) sao cho:

  • Số chữ số của \(C\) bằng tổng số chữ số của \(A\)\(B\);
  • Thứ tự các chữ số trong \(A\) không đổi;
  • Thứ tự các chữ số trong \(B\) không đổi;

Yêu cầu: Hãy tìm số \(C\) nhỏ nhất có thể ghép được.

Input

  • Nhập vào hai số tự nhiên \(A\)\(B\). \((1 \le A \le B \le 10^8)\). Mỗi số được ghi trên một dòng.

Output

  • Đưa ra số \(C\) thỏa mãn đề bài.

Example

Test 1

Input
15 
28  
Output
1258
Note

Có thể ghép thành các số: \(1528,1258,1285,2815,2158,2185\). Số nhỏ nhất là \(1258\).

Test 2

Input
12547
2469 
Output
122454679
Note

Có thể ghép thành các số khác nhau như: \(125472469,124692547,122469547,122454679, ...\). Số \(122454679\) là số nhỏ nhất thỏa mãn.


Bình luận


  • 1
    VuxPerfect    8:13 p.m. 10 Tháng 9, 2024

    Code lỏ dùng 2 trỏ 😃

    include <bits/stdc++.h>

    define endl "\n"

    define ll long long

    using namespace std;

    int main(){
    string a,b; cin >> a >> b;
    int i = 0; int j = 0;
    while (i < a.length() && j < b.length()){
    if ((a[i] - '0') > (b[j] - '0')){
    cout << b[j++];
    }
    else if ((a[i] - '0') < (b[j] - '0')){
    cout << a[i++];
    }
    else cout << a[i++];
    }
    while (i < a.length()) cout << a[i++];
    while (j < b.length()) cout << b[j++];
    return 0;
    }

    • 4 bình luận nữa