Bunica Marei țese un covor. Mara urmărește cu mare atenție modelul și încearcă să-l reconstituie pe caietul de matematică. Modelul este format din romburi. Primul romb, de indice 1
, are latura formată din două pătrățele, al doilea romb, de indice 2
, are latura formată din trei pătrățele etc. Un romb de indice i
are latura formată din i+1
pătrățele.
Romburile sunt unite, consecutiv, ca în exemplul din imaginea alăturată. Săgețile indică sensul în care bunica țese covorul.
Ca să nu uite modelul, Mara scrie pe caiet, începând cu 1
, numere consecutive care să indice modul în care țese bunica covorul.
În exemplul următor este reprezentat modul în care se țese un model format din patru romburi.
Cerinţe
Cunoscându-se numerele n
și k
să se determine:
1. numărul maxim de romburi complete care pot forma modelul unui covor, descris cu ajutorul unui șir format din maximum n
numere naturale consecutive (primul număr din șir fiind 1
);
2. cel mai mic indice al unui romb ce conține numărul k
.
Date de intrare
Fișierul de intrare covor.in
conține pe prima linie, separate prin spațiu, două numere naturale: n
(reprezentând numărul maxim de numere consecutive utilizate la descrierea unui model) și k
(reprezentând un număr din șirul celor n
numere consecutive). Linia a doua conţine una dintre valorile 1
sau 2
reprezentând cerinţa 1, dacă se cere determinarea numărului maxim de romburi complete care pot forma modelul unui covor descris cu ajutorul unui șir format din maximum n
numere, respectiv cerinţa 2, dacă se cere determinarea celui mai mic indice al unui romb ce conține numărul k
.
Date de ieșire
Fișierul de ieșire covor.out
va conține pe prima linie o valoarea naturală reprezentând numărul maxim de romburi complete care pot forma modelul unui covor, descris cu ajutorul unui șir format din maximum n
numere, dacă cerinţa a fost 1
, respectiv un număr natural reprezentând cel mai mic indice al unui romb ce conține numărul k
, dacă cerinţa a fost 2
.
Restricții și precizări
4 ≤ n,k ≤ 999999999
;1≤k≤n
- Dacă numărul
k
nu se află pe niciunul dintre romburile complete ce pot fi construite folosind maximumn
numere, atunci răspunsul de la cerința 2 este0
. - Pentru rezolvarea corectă a cerinţei 1 se acordă 30% din punctaj, iar pentru rezolvarea corectă a cerinţei 2 se acordă 70% din punctaj.
Exemple
covor.in | covor.out | Explicație |
40 32 1 |
4 |
Cel mai mare număr de romburi ce pot forma un model descris cu maximum |
40 32 2 |
3 |
Numărul |
37 7 2 |
2 |
Numărul |
14 12 2 |
0 |
Numărul |
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 Covor:
#include <fstream>
using namespace std;
ifstream f("covor.in");
ofstream g("covor.out");
int n,k,r,p,m,c;
int main()
{ f>>n>>k>>c;
r=1;
while(2*(r+1)*(r+2)-r<=n) r++;
if(c==1)
g<<r<<'\n';
else
{
if(k> 2*r*(r+1)-(r-1)) g<<0<<'\n';
else
{ p=1;
m=1+r*(r+1);
if(k<=m) { while(k>1+p*(p+1))p++;
g<<p<<'\n';
}
else
{ p=r;
while(k>(m+2*p-1))
{ m=m+2*p-1;
p--;
}
g<<p<<'\n';
}
}
}
f.close();g.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 #1139 Covor
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1139 Covor 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!