Răspuns :
Răspuns:
#include <iostream>
using namespace std;
int main()
{
int n,c,ogl=1,nr=1;
cin>>n>>c;
if (n==0&& c==0) cout<<-1;
else if (n==0 && c!=0 ) cout<<0;
else
{
while (n!=0)
{
if (n%10!=c) {ogl=ogl*10+n%10; nr=nr*10;}
n=n/10;
}
ogl=ogl*10+1;
while (ogl!=0)
{
n=n*10+ogl%10;
ogl=ogl/10;
}
n=n/10;
if (nr==1) cout<<-1; else cout<<n%nr;
}
return 0;
}
Explicație: Am construit oglinditul numarului, si in construirea acestuia am ignorat cifra c.
Deoarce la refacerea numarului, dispareau unele cifre de 0 , am incadrat oglinditul intre doua cifre de 1, deoarce ogl 200 de expl construit clasic ar fi 2. Dar pe noi ne intereseaza si acele 2 zerouri. Prin urmare, i-a, pus artificial oglinditului un 1 in fata si l-am scos ulterior.
De expl, pt nr 4200 elimin cifra c= 4. Daca pornesc cu ogl=0, vor disparea 0-urile de la sfarsit. Cand refac numarul ramas, adica oglinditul oglinditului, imi va afisa 2, ceea ce nu e corect. Prin urmare, incep cu ogl=1; La sfarsit, adaug un 1 si la sfarsitul oglinditului. Oglinditul nr din care am eliminat cifra 4 va fi 10021 . Oglinditul acestuia e 12001, scot acele cifre de 1 puse de mine artificial si ramane dupa eliminare 200 asa cum ar fi normal.
Am pus 1 la finalul oglinditului ca sa vad care e situatia reala si cand raman doar cifre de 0 dupa eliminarea cifrei c.
Variabila nr ma ajuta sa scap de 1 de la inceputul numarului. Ea va fi puterea lui 10 cu exponent egal cu numarul de cifre al lui n (ramas dupa eliminarea cifrelor c). In final, n=n/10 ma scapa de cifra 1 pusa de mine la sfarsit, iar cand am afisat acel n%nr, practic am scapat de acel 1 pus de mine artificial la inceputul numarului.