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;
}