Informatică, întrebare adresată de laurstefan2002, 8 ani în urmă

Problema numere15 #1613 de pe pbinfo va rog ca am reusit doar de 80p:
Cerința
Se citește un număr natural nenul n. Numărul n1 este format doar din cifrele pare ale lui n. Numărul n2 este format doar din cifrele impare ale lui n. Calculați valoarea absolută a diferenței lor.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numărul d, reprezentând valoarea absolută a diferenței dintre n1 și n2.

Restricții și precizări
1 ≤ n < 1000000000
numărul n conține cel puțin o cifră pară și cel puțin o cifră impară

Exemplu
Intrare

120341
Ieșire

73
Explicație
n1 este 204 iar n2 este 131. Diferența este 73.

Răspunsuri la întrebare

Răspuns de boiustef
0

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, copie, cif, z=1, n1=0, n2=0, d;

   cin >> n;

   copie=n;

   while (copie>9) { z*=10; copie/=10; }

   while (n)

   {

       cif=n/z;

       if (cif%2) n2=n2*10+cif;

       else n1=n1*10+cif;

       n%=z;

       z/=10;

   }

   d=n1-n2;

   if (d<0) d=-d;

   cout << d  << endl;

   return 0;

}

Explicație:


laurstefan2002: Doar 80...Ai putea sa incerci sa il optimizezi sau nu stiu sa incerci sa ii faci ceva ca sa dea 100 te tog?
boiustef: #include < iostream >
using namespace std;
int main()
{
int n, copie, cif, p1=1, p2=1, n1=0, n2=0, d;
cin >> n;

while (n)
{
cif=n%10;
if (cif%2) {n2=n2+cif*p2; p2*=10;}
else { n1=n1+cif*p1; p1*=10; }
n/=10;
}
d=n1-n2;
if (d < 0) d=-d;
cout << d;
return 0;
}
laurstefan2002: Mersi, acesta da 100p
Alte întrebări interesante