Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Problema asociat_par #3251 de pe pbinfo va rog:
Cerința
Se dau n numere naturale. Se numește număr par asociat unui număr x numărul obținut din cifrele pare ale lui x luate în ordinea în care apar ele în x. De exemplu, numărul 3246456 are ca număr par asociat pe 24646, iar 37030 pe 0. Dacă numărul nu are cifre pare, atunci el nu are număr par asociat. Numărul 3731 nu are număr par asociat.
Se cere să se determine câte dintre cele n numere citite au numărul par asociat palindrom. Se numește palindom un număr care citit de la dreapta la stânga are aceeași valoare.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire
Programul va afișa pe ecran numărul c, reprezentând numărul de numere citite care au numărul asociat palindrom.

Restricții și precizări
1 ≤ n ≤ 100
cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu
Intrare

5
45456 474 201102 2352345 234
Ieșire

2
Explicație
Dintre numerele citite 474 și 201102 au numerele pare asociate palindrom (44 și 2002).

Răspunsuri la întrebare

Răspuns de DoruDam
8

Răspuns:

#include <iostream>

using namespace std;

int asociat(int n, int &as)

{

   int p=1, ok=0;

   as = 0;

   if (n==0) ok=1;

   else

   while (n)

   {

       if (n%2==0)

       {

           as=n%10*p+as;

           p*=10;

           ok=1;

       }

       n/=10;

   }

   return ok;

}

int palindrom (int n)

{

   int y=0;

   while (n)

   {

       y = y*10+n%10;

       n/=10;

   }

   return y;

}

int estePalindrom(int n)

{

   if (n==palindrom(n))

       return 1;

   return 0;

}

int n,  ans=0, ok;

int main()

{

   cin>>n;

   for (int i=1; i<=n; i++)

   {

       int x, as;

       cin>>x;

       if (x==0)

           ans++;

       else

       {

           ok = asociat(x, as);

           if (ok && estePalindrom(as))

               ans++;

       }

   }

   cout<<ans;

}

Explicație:

Alte întrebări interesante