Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void inserare(int n, int &d)
- {
- int nou=0, st, dr, p=1, cn=n;
- //pentru a verifica paritatea numerelor alaturate
- //consider mereu 'st' ca fiind numarul din stanga si dr ca fiind cel din dreapta
- //ex: 12345 in parcurgere arata ceva de genu 12ab5 si pasu urmator 1ab45
- nou=n%10, dr=n%10, n/=10, p*=10;
- //ultima cifra o trec indiferent
- while (n)
- {
- st=n%10;
- if (st%2==dr%2)
- nou=((st+dr)/2)*p+nou, p*=10;
- //daca am caz favorabil, fac media si o adaug la numarul nou
- nou=st*p+nou, p*=10;
- n/=10;
- dr=st;
- //numarul din dreapta devine fostul numar din stanga
- //si la urmatoarea iteratie fac rost de un nou numar din stanga
- }
- if (nou==cn)
- d=-1;
- else
- d=nou;
- //suprascriu, am preferat sa lucrez cu 'nou' decat cu 'd'
- /*
- ca si idee, cand faci oglinditu codu arata ceva de genu:
- ogl=ogl*10+(n%10);
- iar cand incerci sa reconstruiesti un numar:
- nr=(n%10)*p+nr; p*=10;
- unde 'p' e o putere a lui 10 ce incepe initializata p=1;
- */
- }
- int main()
- {
- int n, d;
- cin>>n;
- inserare(n, d);
- cout<<d;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment