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