👤
Mierlaaurie
a fost răspuns

Cerinţa
Se citesc două numere naturale n și m. Să se decidă dacă cele două numere au cel puțin o cifră comună.

Date de intrare
Programul citește de la tastatură numerele n și m.

Date de ieşire
Programul afișează pe ecran mesajul DA, dacă cele două numere au cel puțin o cifră comună, respectiv NU în caz contrar.

Restricţii şi precizări
1 ≤ n, m ≤ 1.000.000.000

Exemplu
Date de intrare

173954 889205
Date de ieșire

DA


Răspuns :

#include <iostream>



using namespace std;


short vcn[10], vcm[10];  //vectorii cifrelor lui n si m


int main()


{


   int n, m, cif, comune;


   cout << "n="; cin >> n;


   cout << "m="; cin >> m;


   while (n)


   {


       cif=n%10;


       ++vcn[cif];


       n/=10;


   }


   while (m)


   {


       cif=m%10;


       ++vcm[cif];


       m/=10;


   }


   comune=0;


   for (cif=0; cif<10; ++cif)


       if (vcn[cif]>0 && vcm[cif]>0)  { comune=1; break; }


   if (comune==1) cout << "DA";


   else cout << "NU";


   return 0;


}


metoda2 ------   fara vectori

#include <iostream>

using namespace std;

int main()

{

   int  n, m, cif, zero=0, unu=0, doi=0, trei=0, patru=0, cinci=0;

   int sase=0, sapte=0, opt=0, noua=0, comune=0;

   cin >> n >> m;

   while (n)

   {

       cif=n%10;

       if (cif==0) zero=1;

       if (cif==1) unu=1;

       if (cif==2) doi=1;

       if (cif==3) trei=1;

       if (cif==4) patru=1;

       if (cif==5) cinci=1;

       if (cif==6) sase=1;

       if (cif==7) sapte=1;

       if (cif==8) opt=1;

       if (cif==9) noua=1;

       n=n/10;

   }

   while (m)

   {

       cif=m%10;

       if (cif==0 && zero==1) { comune=1; break; }

       if (cif==1 && unu==1) { comune=1; break; }

       if (cif==2 && doi==1) { comune=1; break; }

       if (cif==3 && trei==1) { comune=1; break; }

       if (cif==4 && patru==1) { comune=1; break; }

       if (cif==5 && cinci==1) { comune=1; break; }

       if (cif==6 && sase==1) { comune=1; break; }

       if (cif==7 && sapte==1) { comune=1; break; }

       if (cif==8 && opt==1) { comune=1; break; }

       if (cif==9 && noua==1) { comune=1; break; }

   }

   if (comune) cout << "DA";

   else cout << "NU";

   return 0;

}