# PBinfo #2871 – Fulger – Rezolvare C++

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

## Enunț

Pentru a putea ajunge la concursul de mașini, Fulger Mcqueen, trebuie să termine de asfaltat drumul din Valea Radiator. La intrarea în Valea Radiator, Bucșă are pregătite N bidoane, fiecare având înscris pe el câte un număr. Dintre cele N bidoane doar câteva conțin asfalt.

Bucșă îi spune lui Fulger:

– Fulger, prietene, vreau să te ajut să găsești bidoanele corecte, așa că îți spun că fiecare număr de pe bidon are asociat un cod secret, codul secret al fiecărui număr se obține prin diferența dintre numărul alcătuit din atâtea cifre de 9 câte are numărul scris pe bidon și numărul de pe bidon. Bidoanele cu asfalt au cifra unităților 0 și cifra zecilor 1.

Scrieți un program care să determine:

a) Codul secret asociat fiecărui număr de pe bidon;
b) Numărul de bidoane care conțin asfalt.

Date de intrare
Fișierul de intrare fulger.in conține pe prima linie un număr natural N ce reprezintă numărul de bidoane pregătite de Bucșă, iar următoarele N linii, câte un număr natural, diferit de 0, ce reprezintă numărul asociat fiecărui bidon.

Date de ieșire
Fișierul de ieșire fulger.out va conține pe prima linie, despărțite prin spațiu codul secret al fiecărui număr de pe bidon, iar pe cea de-a doua linie, un număr natural ce reprezintă numărul de bidoane cu asfalt, pe care le-a descoperit Fulger.

Restricții și precizări

1 ≤ n ≤ 100
numerele de pe a doua linie a fișierului de intrare vor fi situate în intervalul [1, 1.000.000.000]

Exemplu:
fulger.in

5
2138
531649
154289
798
96489
fulger.out

7861 468350 845710 201 3510
2
Explicație
Bucșă a pregătit pentru Fulger 5 bidoane.

Cerința a) 

Primul bidon are codul secret 7861, deoarece 9999 – 2138 = 7861
Al doilea are codul secret 468350, deoarece 999999 – 531649 = 468350
Al treilea are codul secret 845710, deoarece 999999 – 154289 = 845710
Al patrulea are codul secret 201, deoarece 999 – 798 = 201
Al cincilea are codul secret 3510, deoarece 99999 – 96489 = 3510

Cerința b) 

Numărul de bidoane cu asfalt este 2.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
ifstream in("fulger.in");
ofstream out("fulger.out");
#define cin in
#define cout out
long long int n, contor = 0;
long long int cod(long long int n) {
    long long int copie = n, nr = 0;
    while (copie > 0) {
        nr = nr * 10 + 9;
        copie = copie / 10;
    } return nr - n;
}
bool verif(long long int n) {
    if (n % 100 == 10)
        return true;
    return false;
}
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        long long int temp;
        cin >> temp;
        cout << cod(temp) << " ";
        if (verif(cod(temp)) == true) 
            contor++;
    } cout << "\n" << contor;
    return 0;
}
```

## Resurse

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