👤

Se citesc numere întregi până când se introduce numărul 0.
1. Să se afișeze toate perechile de numere citite consecutiv cu proprietatea că primul
număr este egal cu suma divizorilor proprii a celui de-al doilea număr.
2. Să se afișeze toate numerele introduse care au cifrele distincte.
3. Să se afișeze suma numerelor introduse care sunt palindrom.



Răspuns :

#include <iostream>

using namespace std;

int main()

{

   int contor = 1;

   int n, V[50], i = 0;

   do

   {

     cin>>n;

     V[i++] = n;

   }

   while(n!=0);

 

  ///Prima cerinta:

   cout<<endl;

   cout<<"1.  ";

   for(int j=0; j<=i-3; j++)

   {

       int S=0;

       for(int d = 2; d <= V[j+1]/2; d++)

       {

           if(V[j+1]%d == 0) {S += d;}

       }

       if(V[j] == S)

          {

              cout<<"("<<V[j]<<","<<V[j+1]<<") ";

          }

   }

  ///A doua cerinta;

   cout<<endl;

   cout<<"2.  ";

   for(int j=0; j<=i-2; j++)

   {

       int nr = V[j], egale = 0;

       while(nr!=0)

       {

           int u = nr%10;

           int res = nr/10;

           while(res!=0)

           {

               if(u == res%10) {egale++;}

               res = res/10;

           }

           nr = nr/10;

       }

       if(egale == 0) {cout<<V[j]<<" ";}

   }

  ///A treia cerinta:

   cout<<endl;    

   cout<<"3.  ";

   int S = 0;

   for(int j=0; j<=i-2; j++)

   {

       int nr = V[j], egale = 0;

       int rasturnat = 0;

       while(nr!=0)

       {

           rasturnat = (rasturnat*10)+nr%10;

           nr = nr/10;

       }

       if(V[j] == rasturnat && V[j] > 9)

       {

           S = S+V[j];

       }

   }

   cout<<"S = "<<S;

}

#include <iostream>

#include <fstream>

using namespace std;

int suma_divizorilor(int numar)

{

   int suma = numar + 1, divizor = 2;

   while(divizor <= numar / 2)

   {

       if(numar % divizor == 0)

           suma += divizor;

       divizor++;

   }

   return suma;

}

bool are_cifrele_distincte(int numar)

{

   int cifre[10] = {0};

   while(numar)

   {

       int ultima_cifra = numar % 10;

       if (cifre[ultima_cifra])

           return false;

       else

           cifre[ultima_cifra] = 1;

       numar /= 10;

   }

   return true;

}

bool este_palindrom(int numar)

{

   int cifre[9] = {0}, index = 0;

   while(numar)

   {

       cifre[index] = numar % 10;

       index++;

       numar /= 10;

   }

   for(int iterator = 0; iterator <= index / 2; iterator++)

   {

       if(cifre[iterator] != cifre[index - iterator - 1])

           return false;

   }

   return true;

}

int main()

{

   int numar1, numar2, sumar_numerelor_palindrom = 0;

   cin >> numar1;

   if(are_cifrele_distincte(numar1))

       cout << numar1 << " are toate cifrele distincte.\n";

   if(este_palindrom(numar1))

       sumar_numerelor_palindrom += numar1;

   while(cin >> numar2)

   {

       if(numar2 == 0)

           break;

       if(numar1 == suma_divizorilor(numar2))

           cout << numar1 << " este egal cu suma divizorilor lui " << numar2 << endl;

       if(are_cifrele_distincte(numar2))

           cout << numar2 << " are toate cifrele distincte.\n";

       if(este_palindrom(numar2))

           sumar_numerelor_palindrom += numar2;

       numar1 = numar2;

   }

   cout << "Suma numerelor palindrom este: " << sumar_numerelor_palindrom << endl;

   return 0;

}

Toate cerintele intr-un singur program.