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:
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
.
#include <bits/stdc++.h> using namespace std; ifstream cin("culegere.in"); ofstream cout("culegere.out"); long long int p, n; int main() { cin >> p >> n; long long int nrp = p * (p + 1)/2, aux = nrp , pt = 10 , tcif = 0, nrcif = 0; while (aux) nrcif ++ , aux /= 10; for (int i = 1; i < nrcif; i++ , pt*=10) tcif += (i * (pt - pt / 10)); tcif += (nrcif * (nrp - pt/10 + 1)); cout << tcif << '\n'; long long int m = 1; while (m * (m + 1) / 2 < n) m++; cout << m; return 0; }