아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Malowanie płotu

시간 제한6초메모리 제한1024 MB

요약
n개의 널빤지 각각에 비어 있지 않은 연속 구간을 칠하되 이웃한 널빤지의 구간이 겹치도록 칠하는 방법의 수를 소수 p로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 조합론, 누적 합
정답자
아직 제출이 없습니다

문제

Tegoroczna jesienna słota zupełnie zniszczyła farbę na płocie pana Potyczka. Trzeba czym prędzej pokryć płot specjalnym niebieskim impregnatem, żeby nadchodząca zima nie zrujnowała go nieodwracalnie. Pan Potyczek poprosił o to pracowitego synka sąsiadów o imieniu Bajtek. Chłopiec dziś rano wykonał zadanie, jednak zrobił to dość niedbale, gdyż śpieszył się na kolejną rundę Szranek Algorytmicznych.

Płot pana Potyczka składa się z n sztachet, a każda sztacheta podzielona jest na m równej długości segmentów. Bajtek każdą sztachetę pociągnął farbą od góry do dołu tylko raz, co niestety mogło nie wystarczyć, żeby pomalować ją w całości. Niemniej jednak, na każdej sztachecie pomalowany został spójny przedział segmentów, a każdy segment został albo całkowicie pomalowany albo niepomalowany wcale. Okazało się ponadto, że część płotu pomalowana przez chłopca jest spójna, tzn. dla każdych dwóch kolejnych sztachet przedziały segmentów pomalowane na nich mają niepuste przecięcie.

Przykładowo, pomalowany płot może wyglądać następująco:

Natomiast poniższa sytuacja jest niemożliwa z trzech różnych powodów:

  • Sztacheta numer 1 nie została w ogóle pomalowana.
  • Na sztachecie numer 3 nie został pomalowany spójny fragment.
  • Przedziały segmentów pomalowane na sztachetach o numerach 5 i 6 są rozłączne.

Napisz program, który obliczy, na ile różnych sposobów Bajtek mógł pomalować płot zgodnie z powyższymi zasadami. Dwa sposoby uznajemy za różne, jeśli istnieje segment sztachety pomalowany w jednym z nich i niepomalowany w drugim. Liczba sposobów może być dość duża, więc wystarczy że podasz jej resztę z dzielenia przez liczbę pierwszą p.

입력

W pierwszym i jedynym wierszu wejścia znajdują się trzy dodatnie liczby całkowite n, m oraz p (1 ≤ n·m ≤ 107, 108 ≤ p ≤ 109 , p ∈ P) oznaczające odpowiednio liczbę sztachet, liczbę segmentów na każdej sztachecie oraz liczbę pierwszą p.

출력

Na wyjściu powinna znaleźć się jedna liczba całkowita oznaczająca resztę z dzielenia przez p liczby różnych sposobów, na jakie Bajtek mógł pomalować płot.

예제2

  1. 예제 1

    입력
    3 2 100000007
    
    예상 출력
    17
    
  2. 예제 2

    입력
    6 9 813443923
    
    예상 출력
    57