Răspuns :
bool palindrom(int n)
{int n2=0,aux;
aux=n;
do{
n2=n2*10+(aux%10);
}while(aux!=0);
if(n2==n) return true;
else return false;
}
{int n2=0,aux;
aux=n;
do{
n2=n2*10+(aux%10);
}while(aux!=0);
if(n2==n) return true;
else return false;
}
Varianta 1:
Rasturnam numarul si testam daca numarul este egal cu rasturnatul sau:
#include <iostream>
using namespace std;
int main() {
long long p;
cin >> p;
int cp = p, r = 0; // retinem o copie a lui p
while ( p > 0 ) { // cat timp p mai are cifre
r = r * 10 + p % 10; // alfam rasturnatul lui p
p = p / 10; // eliminam ultima cifra
}
if ( cp == r ) // comparam copia lui p cu rasturnatul lui p
cout << "DA";
else
cout << "NU";
return 0;
}
Varianta 2:
Comparam prima cifra cu ultima, apoi le eliminam si reluam cat timp avem macar doua cifre si prima cifra este egala cu ultima
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n;
long long cn = n, p = 1;
// aflam 10 la puterea nr de cifre - 1
while ( cn > 9 ) {
p = p * 10;
cn = cn / 10;
}
// cat timp avem macar doua cifre si prima cifra este egala cu ultima
while ( p > 1 && n / p == n % 10 ) {
n = n % p; // eliminam prima cifra
n = n / 10; // eliminam ultima cifra
p = p / 100; //actualizam puterea
}
if ( p <= 1 ) // daca am ajuns la o cifra sau nu mai avem cifre, numarul este palindrom
cout << "DA";
else
cout << "NU";
return 0;
}
Rasturnam numarul si testam daca numarul este egal cu rasturnatul sau:
#include <iostream>
using namespace std;
int main() {
long long p;
cin >> p;
int cp = p, r = 0; // retinem o copie a lui p
while ( p > 0 ) { // cat timp p mai are cifre
r = r * 10 + p % 10; // alfam rasturnatul lui p
p = p / 10; // eliminam ultima cifra
}
if ( cp == r ) // comparam copia lui p cu rasturnatul lui p
cout << "DA";
else
cout << "NU";
return 0;
}
Varianta 2:
Comparam prima cifra cu ultima, apoi le eliminam si reluam cat timp avem macar doua cifre si prima cifra este egala cu ultima
#include <iostream>
using namespace std;
int main() {
long long n;
cin >> n;
long long cn = n, p = 1;
// aflam 10 la puterea nr de cifre - 1
while ( cn > 9 ) {
p = p * 10;
cn = cn / 10;
}
// cat timp avem macar doua cifre si prima cifra este egala cu ultima
while ( p > 1 && n / p == n % 10 ) {
n = n % p; // eliminam prima cifra
n = n / 10; // eliminam ultima cifra
p = p / 100; //actualizam puterea
}
if ( p <= 1 ) // daca am ajuns la o cifra sau nu mai avem cifre, numarul este palindrom
cout << "DA";
else
cout << "NU";
return 0;
}
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!