Un elev a desenat un set format din mai multe pătrate care conțin numere naturale nenule, distincte, consecutive, dispuse în număr egal pe laturi. Pe latura fiecărui pătrat sunt scrise un număr impar de valori. În fiecare pătrat, numerele sunt scrise în ordine crescătoare parcurgând laturile sale, începând din colțul stânga-jos, în sensul invers al acelor de ceasornic. Elevul a numerotat pătratele cu 1
, 2
, 3
etc., în ordinea strict crescătoare a numărului de valori conținute de fiecare. Diferența dintre cel mai mic număr din pătratul P
(1 < P
) și cel mai mare număr din pătratul P - 1
este egală cu 1
. Primele patru pătrate sunt:
Astfel, primul pătrat conține numerele naturale distincte consecutive de la 1
la 8
, dispuse câte trei pe fiecare latură a pătratului. Al doilea pătrat conține următoarele 16
numere naturale distincte consecutive, dispuse câte cinci pe fiecare latură. Al treilea pătrat conține următoarele 24
de numere naturale distincte consecutive, dispuse câte șapte pe fiecare latură. Al patrulea pătrat conține următoarele 32
de numere naturale distincte consecutive, dispuse câte nouă pe fiecare latură etc.
Cerința
Scrieţi un program care rezolvă următoarele două cerinţe:
1. citește un număr natural M
și determină numărul K
de valori conținute de pătratul numerotat cu M
;
2. citește un număr natural N
și determină numărul T
al pătratului care conține numărul N
pe una dintre laturi.
Date de intrare
Fișierul de intrare patrate3.in
conține pe prima linie un număr natural C
reprezentând cerința din problemă care trebuie rezolvată (1
sau 2
). Dacă C = 1
, atunci fişierul conține pe a doua linie numărul natural M
. Dacă C = 2
, atunci fișierul conține pe a doua linie numărul natural N
.
Date de ieșire
Dacă C = 1
, atunci fişierul de ieşire patrate3.out
conţine pe prima linie numărul K
, reprezentând răspunsul la cerința 1 a problemei. Dacă C = 2
, atunci fişierul de ieşire patrate3.out
conţine pe prima linie numărul natural T
, reprezentând răspunsul la cerinţa 2.
Restricții și precizări
1 ≤ M ≤ 260 000 000
7 ≤ N ≤ 2 147 302 920
- Numerele
N
,M
,T
șiK
sunt numere naturale - NU există două pătrate cu acelaşi număr de valori scrise pe laturi
- Pentru rezolvarea corectă a cerinţei 1 se acordă
10
puncte; pentru rezolvarea corectă a cerinței 2 se acordă80
de puncte. - În concurs s-au acordat
10
puncte din oficiu. Aici se acordă10
puncte pentru exemplele din enunț.
Exemplul 1:
patrate3.in
1 3
patrate3.out
24
Explicație
Cerinţa este 1. Pătratul numerotat cu M = 3
conține K = 24
de numere naturale (vezi figura din enunț).
Exemplul 2:
patrate3.in
2 73
patrate3.out
4
Explicație
Cerinţa este 2. Numărul N = 73
este conținut de pătratul numerotat cu T = 4
(vezi figura din enunț).
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 patrate3:
#include <fstream>
using namespace std;
ifstream f("patrate3.in");
ofstream g("patrate3.out");
int main()
{
int N,C,M,T,K,nr=0;
f>>C;
if(C==1)
{
f>>M;
K=8*M;
g<<K<<endl;
}
else
{
f>>N;
T=0;nr=0;
while(8*(T+1)<=N-nr)
{
++T; K=8*T; nr=nr+K;
}
if(N>nr)
{
++T;
}
g<<T<<endl;
}
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 #2448 patrate3
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2448 patrate3 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!