Să se scrie un program care generează numere palindrome pe baza următoarelor date:
un număr n reprezentând lungimea exactă a numerelor palindrome (n<=10)
două cifre m si p ai cărui multipli se regăsesc printre cifrele numerelor generate
Soluția va conține numărul de numere generate prin această metodă.
Exemplu: n=3, m=2, p=6 va genera setul de numere
202 222 242 262 282 404 424 444 464 484 606 626 646 666 686 808 828 848 868 888
însumand 20 de astfel de numere.
Răspunsuri la întrebare
#include <iostream>
using namespace std;
bool multiplu(int nr, int a, int b){
//Returneaza 1 daca cifrele lui n sunt multiple ale lui a sau b, 0 in caz contrar
while(nr){
if(nr%10%a!=0 && nr%10%b!=0) return 0;
nr/=10;
}
return 1;
}
int rasturnat(int nr){
//Returneaza rasturnatul numarului
int r=0;
while(nr){
r=r*10+nr%10;
nr=nr/10;
}
return r;
}
int main(){
int n,m,p,zece=1;
//Citeste date
cin >> n >> m >> p;
//Determina capetele intervalului de cautare
for(int i=1;i<n;i++)zece*=10;
//Pentru ficare numar din interval
for(int i=zece;i<zece*10;i++){
//Verifica daca cifrele sunt multiple ale lui m sau p si daca sunt palindroame
if(multiplu(i,m,p) && i==rasturnat(i)) cout << i << " ";
}
}
Totusi am ales sa scriu aceasta varianta pentru ca e cea mai usor de inteles.