# PBinfo #2442 – cifre006 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

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)

Date de intrare
Pe prima linie a fișierului cifre006.in se află numărul natural N și cifra k separate printr-un spațiu.

Date de ieșire
Fișierul de ieșire cifre006.out va conține două valori, fiecare pe câte un rând. Prima valoare este numărul de cifre k existente în N, iar a doua valoare este numărul obținut din N după modificare.

Restricții și precizări

1 ≤ N ≤ 1000000000
numărul N după modificare poate avea cifre mai puține

Exemplu:
cifre006.in

134112 1
cifre006.out

3
111342
Explicație
cifra 1 apare de 3 ori. 
134112 → 111342, cele trei cifre 1 se mută la început iar cifrele 3, 4, 2 se pun la sfârșit în ordinea în care au apărut în 134112.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("cifre006.in");
ofstream out("cifre006.out");
int N, k, cif, ap, p = 1, N1, N2;
int main() {
    in >> 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;
    } out << ap << '\n' << N1 * p + N2;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/2442)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/2442/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-2442/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
