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

Cerinţa
Se dau mai multe numere naturale. Determinaţi cel mai mare număr palindrom aflat printre numerele date şi de câte ori apare.

Date de intrare
Programul citește de la tastatură numere naturale, până la apariţia lui zero, care nu se ia în considerare.

Date de ieşire
Programul afișează pe ecran numerele P şi C, numărul palindrom maxim şi numărul de apariţii, separate printr-un spaţiu, sau mesajul NU EXISTA, dacă printre numerele date nu există nici un număr palindrom

Restricţii şi precizări
fiecare dintre numerele citite va avea cel mult 9 cifre;



Exemplu
Date de intrare

78 56 5665 98789 5665 88 98789 12521 5665 0
Date de ieșire

98789 2

Va rog mult in sursa c plus plus atasata

Răspunsuri la întrebare

Răspuns de Palmabil
1

Ti-am pus 2 solutii prima e mai eleganta, dar mai complexa dar a doua e elementara.


#include<bits/stdc++.h>


using namespace std;


int main()


{


   vector<int> v;


   string s,ss;


   int x,ap=0;


   cin>>x;


   while(x)


   {


       v.push_back(x);


       cin>>x;


   }


   sort(v.begin(),v.end());


   for(int i=v.size()-1;i>=0;i--)


   {


       s="";


       s+=to_string(v[i]);


       ss=s;


       reverse(s.begin(),s.end());


       if(s==ss)


           break;


   }


   for(int i=v.size()-1;i>=0;i--)


   {


       ss="";


       ss+=to_string(v[i]);


       if(ss==s)


           ap++;


   }


   if(ap==0)


       cout<<"NU EXISTA";


   else


   cout<<s<<" "<<ap;


}


SAU

#include <bits/stdc++.h>

using namespace std;

int main()

{

   int n,x,y,p=-1,c=0;

   cin>>n;

   while(n!=0)

   {

   x=n;

   y=0;

   while(x)

   y=10*y+x%10,x/=10;

   if(y==n)

   if(n>p)

   p=n,c=1;

   else

   if(n==p)

   c++;

   cin>>n;

   }

   if(p>-1)

   cout<<p<<" "<<c;

   else

   cout<<"NU EXISTA";

   return 0;

}


Alte întrebări interesante