O culegere de probleme are P
pagini, numerotate de la 1
la P
.
Problemele din culegere sunt numerotate cu 1,2,3,...,
etc, în ordinea apariţiei lor în culegere.
Pe prima pagină a culegerii este scrisă o singură problemă (cea cu numărul 1
).
Pe a doua pagină sunt scrise exact două probleme (cele cu numerele 2
şi 3
, în această ordine).
Pe cea de-a treia pagină sunt scrise exact trei probleme (cele cu numerele 4
, 5
şi 6
, în această ordine),…, pe cea de a P
-a pagină sunt scrise exact P
probleme.
Cerința
Scrieţi un program care citeşte numerele naturale P
şi N
şi determină valorile:
a) T
, numărul total de cifre care au fost utilizate în numerotarea tuturor problemelor din culegere;
b) M
, numărul minim de pagini pe care ar trebui să le aibă culegerea, astfel încât aceasta să conţină şi problema numerotată cu N
.
Date de intrare
Fişierul culegere.in
conţine pe prima linie cele două numere naturale P
şi N
, separate printr-un spaţiu, cu semnificaţia din enunţ.
Date de ieșire
Fişierul culegere.out
conţine:
- pe prima linie numărul natural
T
, cu semnificaţia din enunţ; - pe a doua linie numărul natural
M
, cu semnificaţia din enunţ.
Restricții și precizări
1 ≤ P ≤ 16000
1 ≤ N ≤ 2112600000
Exemplu
culegere.in
5 9
culegere.out
21 4
Explicație
Problemele sunt numerotate cu numerele:
1
(pagina1
)2,3
(pagina2
)4,5,6
(pagina3
)7,8,9,10
(pagina4
)11,12,13,14,15
(pagina5
)
În scrierea acestor numere s-au folosit 21
de cifre => T=21
.
Pentru a conţine şi problema cu numărul 9
, culegerea trebuie să aibă minimum 4
pagini => M=4
.
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 Culegere1:
//prof.Carmen Minca
#include <fstream>
using namespace std;
int main()
{ long long nt,p10=1,k=0,M,i,T=0, P,N,x;
ifstream f("culegere.in");
ofstream g("culegere.out");
f>>P>>N;
nt=P*(P+1)/2;
x=nt;
while(x)
{
k++; x/=10;
}
for(i=1;i<k;i++)
{
T=T+i*p10;
p10*=10;
}
T=T*9+(nt-p10+1)*k;
g<<T<<endl;
long long probl=0;
for(M=1;probl+M<N;M++)
probl+=M;
g<<M<<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 #1723 Culegere1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1723 Culegere1 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!