3623 - insule01

De la Universitas MediaWiki
Versiunea din 2 ianuarie 2024 21:51, autor: Brianna Waltner (discuție | contribuții) (Pagină nouă: == 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 şiru...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

Exemplul 1

Intrare
2 
Iesire
Datele de intrare corespund restrictiilor impuse
6

Exemplu 2

Intrare
1000000001
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

def compute_islands(n):
    mod = 1000000007
    dp = [0] * (n+1)
    dp[1] = 2
    dp[2] = 6
    for i in range(3, n+1):
        dp[i] = (dp[i-1] * 2 + dp[i-2] * 2) % mod
    return dp[n]


def main():
    n = int(input())

    if n > pow(10, 9):
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    islands = compute_islands(n)
    print("Datele de intrare corespund restrictiilor impuse")
    print(islands)


if __name__ == "__main__":
    main()

Explicatie

Ş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.