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
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;
}