# PBinfo #958 – Povesti – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: andrei

## Enunț

Rareș și Didi au primit în dar o carte rară de povești, cu N+1 pagini numerotate cu numerele distincte: 0, 1, 2, 3,…, N. De ce rară? Din două motive: 


Este necesar un cifru pentru a deschide cartea. Acest cifru este un număr C egal cu numărul de cifre folosite pentru numerotarea celor N+1 pagini ale cărții.
În carte există o pagină magică. Dacă este descoperită, atunci toate poveștile din carte vor fi înlocuite instantaneu cu altele necunoscute.

Pentru a descoperi numărul P al paginii magice se pornește de la numărul N din care se va alege o cifră (diferită de prima și ultima cifră ale lui N), astfel încât produsul dintre prefixul lui N (reprezentând numărul format din cifrele situate la stânga cifrei alese) și sufixul lui N (reprezentând numărul format din cifrele situate la dreapta cifrei alese) să fie maxim. Numărul paginii magice va fi egal cu acest produs maxim. De exemplu, pentru N=21035 se pot obține produsele: 210*5=1050, 21*35=735, 2*35=70. Astfel numărul paginii magice este 1050.

Pasionați de povești, Rareș dorește să descopere pagina magică iar Didi și-a propus să descopere cifrul pentru deschiderea cărții.

Cerinţe
Scrieţi un program care citeşte numărul natural nenul N şi care determină:
a) numărul P al paginii magice;
b) numărul C reprezentând cifrul de deschidere a cărții.

Date de intrare
Programul citește de la tastatură numărul N, reprezentând numărul de pagini ale cărții de povești.

Date de ieșire
Programul va afișa pe ecran numere P C, n această ordine, cu semnificația din enunț.

Restricții și precizări

100 ≤ N ≤ 1000000000; N număr natural
Pentru rezolvarea corectă a cerinţei a) se acordă 20% din punctaj, iar pentru rezolvarea corectă a ambelor cerinţe se acordă 100% din punctaj.

Exemplu 1
Intrare

113
Ieșire

3 232
Explicație
Numărul paginii magice este 3. 

Paginile cărții sunt numerotate cu numerele: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…, 113. Cifrul este numărul C=232 deoarece s-au folosit 232 cifre pentru scrierea numerelor  paginilor cărții.

Exemplu 2
Intrare

21035
Ieșire

1050 94070
Explicație
Numărul paginii magice este 1050.

Paginile cărții sunt numerotate cu numerele: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,…, 21035. Cifrul este numărul C=94070 deoarece s-au folosit 94070 cifre pentru scrierea numerelor  paginilor cărții.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
long long int n, nrcif = 0, rez;
long long int maxim = -1, ptemp, p = 100;
int st, dr;
int main() {
    cin >> n; st = n / p;
    while (st > 0) {
        st = n / p;
        dr = n % (p / 10);
        ptemp = st * dr;
        if (ptemp > maxim)
            maxim = ptemp;
        p = p * 10;
    } cout << maxim << " ";
    long long int copie = n;
    p = 9;
    while (copie != 0) {
        nrcif++;
        copie = copie / 10;
    } for (int i = 1; i < nrcif; i++) {
        rez = rez + i * p;
        p = p * 10;
    } p = p / 9;
    rez = rez + (n - p + 1) * nrcif + 1;
    cout << rez;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/958)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/958/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-958/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
