# PBinfo #1002 – paginare – Rezolvare C++

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

## Enunț

Cerința
Pentru numerotarea paginilor unei serii enciclopedice formate din unul sau mai multe volume se presupune că se folosesc n cifre. Fiecare volum are 300 de pagini, eventual cu excepţia ultimului volum care ar putea avea mai puţine.

Pentru n dat, să se determine numărul de volume din serie V şi numărul de pagini P ale ultimului volum. Dacă nu este posibilă numerotarea paginilor folosind n cifre, se va afişa mesajul IMPOSIBIL.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numerele V P, separate prin exact un spaţiu, sau mesajul IMPOSIBIL.

Restricții și precizări

1 ≤ n ≤ 1 000 000 000
numerotarea paginilor se face începând cu 1

Exemplul 1
Intrare

999
Ieșire

2 105
Exemplul 2
Intrare

900
Ieșire

IMPOSIBIL

## Cod sursă C++

```cpp
# include <iostream>
using namespace std;
int main() {
    int n, v, p;
    cin >> n;
    bool adv = true;
    int nrpv = 9 + 2 * 90 + 3 * 201;
    v = n / nrpv;
    int r = n % nrpv;
    if (r == 0) {
        p = 300;
    } else {
        v++;
        p = 0;
        if (r < 10) p = r;
        else {
            p = 9;
            r = r - 9;
            if (r <= 2 * 90) {
                if (r % 2 == 0) p = p + r / 2;
                else adv = false;
            } else {
                p = p + 90;
                r = r - 2 * 90;
                if (r % 3 == 0) p = p + r / 3;
                else adv = false;
            }
        }
    } if (adv != 0) cout << v << " " << p;
    else cout << "IMPOSIBIL";
    return 0;
}
```

## Resurse

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