# PBinfo #3623 – insule01 – Rezolvare C++

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

## Enunț

Cerința
Se dă n un număr natural. Într-un şir de lungime n, format cu cifrele 0 şi 1, numim insulă o secvenţă maximă de cifre egale. Să se afle câte insule se află în toate şirurile de lungime n, formate cu cifrele 0 şi 1.

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

Date de ieșire
Programul va afișa pe ecran numărul insulelor care se află în toate şirurile de lungime n, formate cu cifrele 0 şi 1. Deoarece acest număr este prea mare, se va afişa modulo 1.000.000.007.

Restricții și precizări

1 ≤ n ≤ 1.000.000.000

Exemplu:
Intrare

2
Ieșire

6
Explicație
Şirurile de lungime 2 formate cu cifrele 0 şi 1 sunt 00, 01, 10, 11, acestea conţinând 1, 2, 2, respectiv 1 insule. În total sunt 6 insule.

## Cod sursă C++

```cpp
#include <iostream>
#define M 1000000007;
using namespace std;
int n;
int pak(int b, int e)
{
    if(e == 0) return 1;
    if(e % 2 == 0)
    {
        int z;
        z = pak(b,e/2);
        return (1LL * z * z) % M;
    }
    return (1LL * b * pak(b,e-1)) % M;
}
int main()
{
    cin >> n;
    cout << (1LL * pak(2,n-1) * (n+1)) % M;
    return 0;
}
```

## Resurse

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