GenNr

Se citesc 2 numere naturale, cu cel mult 12 cifre fiecare. Să se afișeze cel mai mic și cel mai mare număr având exact două cifre, format cu o cifră din primul număr și cu o cifră din al doilea.

Date de intrare

Programul citește de la tastatură cele 2 numere separate printr-un spațiu.

Date de ieșire

Programul va afișa pe ecran cel mai mic și cel mai mare număr de exact două cifre format cu o cifră din primul număr și cu o cifră din al doilea, separate printr-un spațiu.

Restricții și precizări

  • cele două numere citite vor fi mai mici decât 1.000.000.000.000

Exemplu

Intrare

293 412

Ieșire

12 94

Explicație

1 și 2 sunt cele mai mici cifre din al doilea respectiv primul număr și astfel se formează 12, iar 9 și 4 sunt cele mai mari cifre din primul respectiv al doilea număr și astfel se formează 94.

#include <iostream>

using namespace std;

int main()
{
    long long a,b,min=99,max=0,ca,cb,d,x,y;
        do{
        cin>>a>>b;}
        while(a>=1000000000000 && b>=1000000000000);

        x=a;
        y=b;

        while(x)
        {
              y=b;
              ca=x%10;
              if(ca)
              while(y)
              {
                    cb=y%10;
                    d=ca*10+cb;
                    if(min>d)
                    min=d;
                    if(max<d)
                    max=d;
                    y=y/10;
              }
              x=x/10;

        }
        y=b;
        while(y)
        {
              x=a;
              cb=y%10;
              if(cb)
              while(x)
              {
                    ca=x%10;
                    d=cb*10+ca;
                    if(min>d)
                    min=d;
                    if(max<d)
                    max=d;
                    x=x/10;
              }
              y=y/10;
        }

        cout<<min<<" "<<max;
    return 0;
}

SOLUTIE2

#include <iostream>

using namespace std;
long long x, y, a, b, mini, maxi, yy;
int main()
{
    cin >> x >> y;
    maxi = 0;
    mini = 100;
    while (x)
    {
        yy = y;
        a = x % 10;
        while (yy)
        {
            b = yy % 10;
            if (a * 10 + b > 9 && a * 10 + b > maxi) maxi = a * 10 + b;
            if (b * 10 + a > 9 && b * 10 + a > maxi) maxi = b * 10 + a;
            if (a * 10 + b > 9 && a * 10 + b < mini) mini = a * 10 + b;
            if (b * 10 + a > 9 && b * 10 + a < mini) mini = b * 10 + a;
            yy /= 10;
        }
        x /= 10;
    }
    cout << mini << ' ' << maxi;
    return 0;
}
%d bloggers like this: