Rezolvare completă PbInfo #1943 Bacterie

O echipă de arheologi a descoperit o hartă străveche a Ținutului de Nord, care era locuit de o civilizație condusă după reguli matematice foarte riguroase. Conform acestei hărți, Ținutul de Nord era împărțit în n rânduri a câte m comitate, fiecare comitat ocupând o suprafață pătrată de un hectar.

Însă descoperirile au mai arătat că această civilizație a fost atacată de la sud-vest de o bacterie periculoasă, ce a acționat astfel: în primul an, a infectat comitatul din colțul din stânga jos al hărții, în al doilea an a infectat cele două comitate vecine cu primul, în al treilea an a infectat cele trei comitate vecine cu anterioarele două și așa mai departe, infecția oprindu-se când bacteria a ajuns la marginea de sus sau la marginea din dreapta a hărții.

Primul an Al doilea an Al treilea an Al patrulea an …
…

Cerința

Scrieţi un program care să determine numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.

Date de intrare

Fișierul de intrare bacterie.in conține separate printr-un spaţiu, n și m, dimensiunile hărții.

Date de ieșire

Fișierul de ieșire bacterie.out va conține numărul de comitate rămase neinfectate după oprirea expansiunii bacteriei.

Restricții și precizări

  • 1 ≤ n ≤ 1.000.000.000, 1 ≤ m ≤ 1.000.000.000, numere naturale

Exemplu

bacterie.in

3 5

bacterie.out

9

Explicație

Harta Ținutului de Nord cuprinde 3 rânduri a câte 5 comitate fiecare, având în total 15 comitate. Expansiunea bacteriei s-a oprit după 3 ani, deoarece a atins marginea de sus; au rămas 9 comitate neinfectate.

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 Bacterie:

#include <fstream>

using namespace std;

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

long long n,m,minim,inf;

int main()
{
    fin >> n >> m;
    minim = n;
    if(m < minim) 
        minim = m; //variabila minim va retine numarul de ani dupa care se opreste expansiunea
    inf = minim * (minim + 1) / 2; //inf retine numarul de comitate infectate dupa oprirea expansiunii bacteriei
    fout << n * m - inf << '\n';
    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 #1943 Bacterie

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1943 Bacterie 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!