Rezolvare completă PbInfo #2871 Fulger

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Fulger:

#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("fulger.in");
ofstream fout("fulger.out");

int main()
{
    int n, i, b=0, nr, tr, p;
    fin>>n;
    for(i=1; i<=n; i++)
    {
        fin>>nr;
        tr=0;
        p=1;
        if(nr==0)
            tr=9;
        while(nr)
        {
            tr=(9-nr%10)*p+tr;
            p=p*10;
            nr=nr/10;
        }
        fout<<tr<<" ";
        if(tr%100==10)
            b++;
    }
    fout<<endl<<b;
    fin.close();
    fout.close();
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2871 Fulger

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2871 Fulger de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!