415
Cerința
Se dau 2 numere naturale cu exact 3 cifre fiecare, să se afișeze cel mai mare și cel mai mic număr de două cifre scris cu o cifră din primul număr și cu o cifră din al doilea.
Date de intrare
Programul citește de la tastatură 2 numere separate prin spații.
Date de ieșire
Programul va afișa pe ecran cel mai mare și cel mai mic număr de două cifre scris cu o cifră din primul număr și cu o cifră din al doilea în această ordine, separate prin spații.
Restricții și precizări
100 ≤ a ≤ b ≤ 999
Exemplu
Intrare
123 912
Ieșire
93 11
Explicație
3 și 9 sunt cele mai mari cifre din primul respectiv al doilea număr, iar 1 și 1 sunt cele mai mici cifre din primul respectiv al doilea număr.
#include <bits/stdc++.h>
using namespace std;
int maxi(int n)
{
int ma = 0;
while(n)
{
if(n%10 > ma)
ma = n % 10;
n/=10;
}
return ma;
}
int main()
{
int a , b;
cin >> a >> b;
int max1=maxi(a);
int max2=maxi(b);
int ma;
if(max1 > max2)
ma = max1*10 + max2;
else
ma = max2*10 + max1;
int v[4] , v1[4];
int p = 0 , p1 = 0;
cout << ma << ' ';
while(a)
{
v[p]=a%10;
p++ , a/=10;
}
while(b)
{
v1[p1]=b%10;
p1++ , b/=10;
}
sort(v , v + p);
sort(v1 , v1 + p1);
int min1 = v[0] , min2 = v1[0];
if(v1[0]==0 && v[0]==0)
{
int mi=10;
for(int i = 0 ; i < p ; ++i)
{
if(v[i] < mi && v[i]!=0)
mi=v[i];
if(v1[i] < mi && v1[i]!=0)
mi=v1[i];
}
int m = mi * 10;
cout << m;
}
else
{
if(min1==0 || min2==0)
{
if(min1 > min2)
cout << min1*10;
else
cout << min2*10;
}
else
{
if(min1 < min2)
cout << min1*10+min2;
else
cout << min2*10+min1;
}
}
}
Comentarii