Informatică, întrebare adresată de Utilizator anonim, 9 ani în urmă

Buna am si eu o problema la tema pbinfo #2442 cifre006 pe care nu stiu sa o rezolv,daca are cineva o rezolvare de 100 puncte va rog sa ma ajutati si daca puteti si o explicatie va rog.

Răspunsuri la întrebare

Răspuns de Christ
5

Cerința


Valentin, elev în clasa a V-a, e fascinat de cifre. Îi place să mute cifrele unui număr de pe o poziție pe alta. Astfel, pentru un număr N și o cifră k, mută toate cifrele egale cu k la început, după care așază celelalte cifre în ordinea în care apăreau în N. Desigur, există și situații în care numărul cifrelor lui  N se micșorează sau situații în care numărul N nu se modifică.


De exemplu, dacă numărul N este 134112 și cifra k este 1, după mutarea cifrelor se obține 111342.  

Pornind de la numărul N și cifra k știți ce număr obține Valentin?


Scrieţi un program care să citească numărul natural N şi cifra k și care să determine:


a) de câte ori apare cifra k în numărul N; (30% din punctaj)


b) numărul obținut după modificarea numărului N; (70% din punctaj)


Solutie:

#include <fstream>


using namespace std;



ifstream fin ("cifre006.in");


ofstream fout("cifre006.out");



int main(){


   long long n, x = 0, p = 1, y = 0, z;


   int nr = 0, k, a = 0;


   fin >> n >> k;


   while (n > 0){


    if (n%10 == k)


           a++, x = x*10+k;


       else


           nr++, y += n%10*p, p *= 10;


       n /= 10;


   }


   p = 1;


   while (nr){


       p *= 10;


       nr--;


   }


   x *= p;


   z = x + y;


   fout << a << '\n' << z;


   fin.close();


   fout.close();


   return 0;


}

Răspuns de mocanualexandrp2ikb6
0

#include <fstream>

using namespace std;

ifstream fin("cifre006.in");

ofstream fout("cifre006.out");

int N, k, cif, ap, p = 1, N1, N2;

int main()

{

   fin >> N >> k;

   while(N)

   {

       cif = N % 10;

       if(cif == k)

       {

           ap++;

           N1 = N1 * 10 + cif;

       }

       else

       {

           N2 = N2 + cif * p;

           p = p * 10;

       }

       N = N / 10;

   }

   fout << ap << '\n' <<N1*p+N2;

   return 0;

}

Alte întrebări interesante