#2750 GenNr
Cerința
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.
Imi da mereu 20% si nu inteleg de ce?
#include
using namespace std;
int main()
{
long long n, m, cifmax1=0, cifmin1=9, cifmax2=0;
long long cifmin2=9, nrmax, nrmin, cif;
cin >> n >> m;
while (n)
{
cif=n%10;
if (cif>cifmax1) {cifmax1=cif;}
if (cif
n=n/10;
}
while (m)
{
cif=m%10;
if (cif>cifmax2) {cifmax2=cif;}
if (cif
m=m/10;
}
nrmax=max(cifmax1,cifmax2)*10 + min(cifmax1,cifmax2);
nrmin=min(cifmin1,cifmin2)*10 + max(cifmin1, cifmin2);
cout << nrmin << " " << nrmax;
return 0;
}
rau ca nu se vede tot codul ....
Răspunsuri la întrebare
#include <iostream>
#include <algorithm>
using namespace std;
short a[13], b[13], nrmin, nrmax, i, j, nrcifa, nrcifb;
long long m, n;
int main()
{
cin >> m >> n;
while (m)
{
++nrcifa; a[nrcifa]=m%10;
m/=10;
}
sort(a+1, a+nrcifa+1);
while (n)
{
++nrcifb; b[nrcifb]=n%10;
n/=10;
}
sort(b+1, b+nrcifb+1);
nrmax=max(a[nrcifa],b[nrcifb])*10+min(a[nrcifa],b[nrcifb]);
if (a[1] && b[1]) nrmin=min(a[1],b[1])*10+max(a[1],b[1]);
else
{
if (a[1]==0 && b[1])
{
j=1; while (a[j]==0) ++j;
if (a[j]<b[1]) nrmin=a[j]*10+b[1];
else nrmin=b[1]*10;
}
if (a[1] && b[1]==0)
{
j=1; while (b[j]==0) ++j;
if (b[j]<a[1]) nrmin=b[j]*10+a[1];
else nrmin=a[1]*10;
}
if (a[1]==0 && b[1]==0)
{
j=1; while (a[j]==0) ++j;
i=1; while (b[i]==0) ++i;
nrmin=min(a[j], b[i])*10;
}
}
cout << nrmin << " " << nrmax;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
unsigned long long n, m; short int i,j; int x,y,m1,M1,cif1[10]={0},cif2[10]={0};
cin >> n >> m;
m1=100;M1=0;
do
{
cif1[n%10]++;
n=n/10;
}
while(n);
do
{
cif2[m%10]++;
m=m/10;
}
while(m);
for(i=0;i<10;i++)
for(j=0;j<10;j++)
if(cif1[i]&&cif2[j])
{
x=i*10+j;
y=j*10+i;
if(x>9)
{
if(x<m1)
m1=x;
if(M1<x)
M1=x;
}
if(y>9)
{
if(m1>y)
m1=y;
if(M1<y)
M1=y;
}
}
cout<<m1<<" "<<M1;
return 0;
}