== include(page="template/taskheader" task_id="bignum") ==
Vom nota un număr în baza $2$ cu cifrele $b[$1$]$,..., $b[k]$ prin $b[$1$]$... $b[k]$~$2$~. De exemplu, $101$~$2$~ este numarul $1 + 2^2^ = 5$. Definim ordonarea unui număr în baza $2$ ca fiind numărul ce rezultă din sortarea în ordine crescătoare a cifrelor numărului. De exemplu, $ordonare(101{~2~}) = 011{~2~} = 1 + 2^1^ = 3$, sau $ordonare(10101{~2~}) = 00111{~2~} = 1 + 2^1^+ 2^2^ = 7$.
Se dă un numar $N$~$2$~ în baza $2$. Să se calculeze suma $ordonare(1{~2~})+...+ordonare(N{~2~})$ mod $10^9^ + 7$
Poveste şi cerinţă...
h2. Date de intrare
Primul rând al fişierului de intrare conţine numărul $N$~$2$~, în baza $2$.
Fişierul de intrare $bignum.in$ ...
h2. Date de ieşire
Fişierul de ieşire va conţine suma descrisă anterior, în baza $10$.
În fişierul de ieşire $bignum.out$ ...
h2. Restricţii
* Pentru teste în valoare de $20$ de puncte , $N$~$2$~ are cel mult $20$ de cifre în baza $2$
* Pentru alte teste în valoare de $30$ de puncte , $N$~$2$~ are cel mult $2 000$ de cifre în baza $2$
* Pentru alte teste în valoare de $50$ de puncte , $N$~$2$~ are cel mult $200 000$ de cifre în baza $2$
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. bignum.in |_. bignum.out |
| 100 | 6 |
| 11110000 | 5040 |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicaţie
Observăm că:
$ordonare(1{~2~})+ordonare(10{~2~})+ordonare(11{~2~})+ordonare(100{~2~})$
$= 1{~2~} + 01{~2~} + 11{~2~} + 001{~2~}$
$= 1 + 1 + 3 + 1$
$= 6$
...
== include(page="template/taskfooter" task_id="bignum") ==