👤

Petrică, tânăr licean în clasa a IX-a, a primit în dar de la părinţii săi un cont bancar pentru micile sale cheltuieli curente. El este pasionat de Internet Banking şi îşi verifică cu grijă toate tranzacţiile efectuate. Pentru creşterea securităţii tranzacţiilor online, banca îi furnizează lui Petrică un număr pe care el va trebui să îl modifice, obţinând un număr TAN – număr de autentificare a tranzacţiei (transaction authentication number). Regula de obţinere a numărului TAN este următoarea: se formează cel mai mic număr par din toate cifrele numărului furnizat de bancă.
Cerinţă

Cunoscând numărul n furnizat de bancă, să se determine numărul TAN obţinut de Petrică.
Date de intrare

Fişierul tan.in conţine pe prima linie numărul natural n cu semnificaţia din enunţ.
Date de ieşire

Fişierul de ieşire tan.out va conţine o singură linie pe care va fi scris numărul TAN cerut.
Restricţii

• 0 < n < 18*1018
• n are cel puţin o cifră pară
• numărul TAN obţinut nu poate conţine zerouri nesemnificative
Exemple

tan.in tan.out Explicaţii
520
250
Cel mai mic număr par format cu cifrele 5,2,0 este 250


Răspuns :

#include <fstream>

using namespace std;

ifstream fin("tan.in");

ofstream fout("tan.out");

unsigned long long n;

int f[10],i,p;

int main()

{

   fin>>n;

   while(n)

   {

       f[n%10]++;

       n/=10;

   }

   if (f[0])

   {

       i=1;

       while (!f[i]) i++;

       fout<<i;

       f[i]--;

   }

   i=8;

   while(i>=0 && f[i]==0) i=i-2;

   p=i;

   f[i]--;

   for(i=0;i<10;i++)

       while(f[i])

       {

           fout<<i;

           f[i]--;

       }

   fout<<p;

   fout<<'\n';

   fin.close();

   fout.close();

   return 0;

}

#include <fstream>

using namespace std;


ifstream fin("tan.in");

ofstream fout("tan.out");

unsigned long long n;

int a[20] , c , aux , k , i , j , ok;

int main()

{

   fin >> n;

   while(n)

   {

       a[k++] = n % 10;

       n /= 10;

   }

   do

   {

       ok = 1;

       for(i = 0 ; i < k - 1 ; ++i)

           if(a[i] > a[i + 1])

           {

               aux = a[i];

               a[i] = a[i + 1];

               a[i + 1] = aux;

               ok = 0;

           }

   }

   while(!ok);

   i = 0;

   while(a[i] == 0)  

       i++;

   if (i > 0)

   {

       a[0] = a[i];

       a[i] = 0;

   }

   i = k - 1;

   while((a[i] % 2) != 0)  

       i--;

   aux = a[i];

   for(j = i ; j <k - 1 ; j++)

    a[j] = a[j + 1];

   a[k - 1] = aux;

   for(i = 0 ; i < k ; i++)  

       fout << a[i];

   fout << '\n';

   

   fin.close();

   fout.close();

   return 0;

}

/// 100 puncte bro


Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.


Wix Learning: Alte intrebari