Răspuns :
Am gasit un exeplu pentru care nu merge: 1920 - afiseaza 17.
Atunci cand faci oglinditul, pierzi cifrele de 0 de la sfarsit. Pentru formarea celui de-al doilea numar nu trebuie sa te complici asa de mult, si am folosit mod y:
#include <iostream>
#include <cmath>
using namespace std;
long long n,cn;
int nr,x,y,nrn1,nrn2,X;
int main(){
cin>>n;
cn=n;
do{
nr++;
cn=cn/10;
}
while(cn);
if(nr%2==0)
x=nr/2;
else
x=nr/2+1;
y=pow(10,x);
nrn1=n/y;
if(nr % 2 == 1)
y /= 10;
nrn2 = n % y;
X=abs(nrn1-nrn2);
cout <<X;
return 0;
}
Uite si solutia mea:
#include <iostream>
#include <math.h>
using namespace std;
int main() {
long long a=0,b=0,i,n,n2,j,p;
cin>>n; i=0; n2=n;
while(n) {
n/=10;
i++;
}
n=n2;
p=1;
for(j=1;j<=i/2;j++) {
b=b+p*(n%10);
p*=10;
n/=10;
}
if(i%2) n/=10;
a=n;
cout<<abs(a-b);
}
Atunci cand faci oglinditul, pierzi cifrele de 0 de la sfarsit. Pentru formarea celui de-al doilea numar nu trebuie sa te complici asa de mult, si am folosit mod y:
#include <iostream>
#include <cmath>
using namespace std;
long long n,cn;
int nr,x,y,nrn1,nrn2,X;
int main(){
cin>>n;
cn=n;
do{
nr++;
cn=cn/10;
}
while(cn);
if(nr%2==0)
x=nr/2;
else
x=nr/2+1;
y=pow(10,x);
nrn1=n/y;
if(nr % 2 == 1)
y /= 10;
nrn2 = n % y;
X=abs(nrn1-nrn2);
cout <<X;
return 0;
}
Uite si solutia mea:
#include <iostream>
#include <math.h>
using namespace std;
int main() {
long long a=0,b=0,i,n,n2,j,p;
cin>>n; i=0; n2=n;
while(n) {
n/=10;
i++;
}
n=n2;
p=1;
for(j=1;j<=i/2;j++) {
b=b+p*(n%10);
p*=10;
n/=10;
}
if(i%2) n/=10;
a=n;
cout<<abs(a-b);
}
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, nu ezitați să ne contactați. Așteptăm cu nerăbdare să vă revedem și nu uitați să ne salvați în lista de favorite!