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 .
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!