Ghép số


Submit solution

Points: 2
Time limit: 1.0s
Memory limit: 100M

Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho hai số nguyên dương x, y, ta xây dựng số z bằng cách ghép các chữ số của x và y sao cho thứ tự các chữ số của x và y vẫn giữ nguyên trên z. Tìm giá trị bé nhất và lớn nhất của z.

Dữ liệu vào

Một dòng gồm 2 số nguyên dương x, y

Dữ liệu ra

Dòng thứ nhất ghi giá trị bé nhất của z và dòng thứ hai ghi giá trị lớn nhất của z

Giới hạn

1 <= x, y <= 108, dữ liệu đảm bảo không có các chữ số 0 vô nghĩa của x và y.

Ví dụ

INPUT

13 26

OUTPUT

1236
2613
utc

Comments


  • 0
    plsdonate123  commented on Nov. 20, 2024, 11:15 a.m.

    include<bits/stdc++.h>

    using namespace std;

    string s,t,miin = "999999999999999999",maax = "0";

    void backtracking(int x,int y,string res){

    if(res.length() == s.length() + t.length()){
    
    
        miin = min (res,miin);
    
    
        maax = max (res,maax);
    
    
    }
    
    
    if(x<s.length()) backtracking(x+1,y,res + s[x]);
    
    
    if(y<t.length()) backtracking(x,y+1,res + t[y]);

    }

    int main (){

    cin >> s >> t;
    
    
    backtracking(0,0,"");
    
    
    cout << miin << "\n" << maax ;

    } tham khảo nhé


  • 0
    Manh_KHMT_K64  commented on Nov. 12, 2024, 5:06 p.m.

    Thảm khảo, code chạy hơi lâu(>_<)

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    #define elif else if
    #define fix_(x) setprecision(x)<<fixed
    int trasnform(string x){
      int res=0;
      for(auto i:x){ 
        res=res*10+i-'0';
      }
      return res;
    }
    signed main(){
      cin.tie(0)->sync_with_stdio(0);
      string x,y;
      cin>>x>>y;
      int n=x.size(),m=y.size();
      int ma = -1e9;
      int mi = 1e18;
      queue<pair<pair<int,int>,string>> q;
        q.push({{0,0},""});
        while(q.size()){
            auto [p,s]=q.front();
            q.pop();
            if (p.first==n&&p.second==m){
                int num = trasnform(s);
                ma=max(ma,num);
                mi=min(mi,num);
                continue;
            }
            if (p.first<n) q.push({{p.first+1,p.second},s+x[p.first]});
            if (p.second<m) q.push({{p.first,p.second+1},s+y[p.second]});
        }
        cout<<mi<<'\n'<<ma;
      return 0;
    }
    

  • 0
    hairep2005  commented on Nov. 12, 2024, 2:11 p.m.

    bài này mik sai ở đâu thế nhỉ mọi người xem giúp mik với , mik cảm ơn nha

    include<bits/stdc++.h>

    using namespace std;

    string Max_Number(string x, string y){

    string res ="" ; 
    
    long long index_x =0 ; 
    
    long long index_y = 0 ; 
    
    while(index_x< x.length() and index_y < y.length()){
    
        if(x[index_x] >= y[index_y]){
            res+= x[index_x] ; 
            index_x++ ; 
        }
        else{
            res+=y[index_y] ; 
            index_y++ ; 
        }
    }
    while(index_x<x.length()){
        res+=x[index_x] ; 
        index_x++ ; 
    }
    while(index_y<y.length()){
        res+=y[index_y] ; 
        index_y++ ; 
    }
    return res;

    }

    string Min_Number(string x, string y){

    string res ="" ; 
    
    long long  index_x =0 ; 
    
    long long  index_y = 0 ; 
    
    while(index_x< x.length() and index_y<y.length()){
        if(x[index_x] <= y[index_y]){
            res+= x[index_x] ; 
            index_x++ ; 
        }
        else{
            res+=y[index_y] ; 
            index_y++ ; 
        }
    }
    while(index_x<x.length()){
        res+=x[index_x] ; 
        index_x++ ; 
    }
    while(index_y<y.length()){
        res+=y[index_y] ; 
        index_y++ ; 
    }
    return res;

    } int main(){

    string x , y ;
    
    cin>>  x>> y ; 
    
    cout<<Min_Number(x,y)<<endl ; 
    
    cout<<Max_Number(x,y) <<endl ;

    }


  • 0
    NguyenDongThinh_CNTT4_K61  commented on Sept. 12, 2021, 7:53 a.m.

    nếu output thứ nhất là 1236 thì em tưởng dòng thứ 2 phải là 2631


    • 1
      LeDucLoi_CNTT4_K61  commented on Sept. 12, 2021, 4:31 p.m.

      tức là cứ số 1 đứng trước số 3, số 2 đứng trước số 6 là được giữ nguyên thứ tự trên từng số, còn số z thì đảo thứ tự được