Atenție! Aceasta este o versiune veche a paginii., scrisă la 2022-03-22 10:44:40.000.
Revizia anterioară   Revizia următoare  

Fișierul intrare/ieșire trepte.in, trepte.out Sursă ad-hoc
Autor Adăugată de avatar vmanz Victor Manz vmanz
Timp de execuție pe test 0.6 sec Limită de memorie 65536 KB
Scorul tău N/A Dificultate N/A

Trepte

Pentru a scăpa de rușinea adusă de rezultatele lui în comparație cu Semicerc, Costel s-a apucat (pe lângă multe altele!) să facă FitnessTM. Deoarece e închis la sală, el s-a adaptat la situație și a început să facă FitnessTM pe scara din casa lui. Scara din casa lui Costel este formată din N + 1 trepte (numerotate de la 0 la N). El începe de pe treapta cu numărul 0 și poate urca câte 1 sau 2 trepte la fiecare pas. Din păcate, M dintre trepte sunt mai șubrede, iar Costel nu poate păși pe ele.

Pentru a scăpa de rușine, Costel se întreabă care este numărul de moduri de a ajunge pe treapta cu numărul N, modulo 109+7.

Date de intrare

Fișierul de intrare trepte.in conține pe prima linie numerele N și M, care reprezintă numărul de trepte ale scării, respectiv numărul de trepte șubrede. Linia i + 1 conține numărul ai, cu semnificația că treapta ai este șubredă.

Date de ieșire

În fișierul de ieșire trepte.out conține pe prima linie răspunsul căutat, modulo 109+7.

Restricții și precizări

  • 1 ≤ ai < ai + 1 < N pentru oricare 1 ≤ i < M.
  • 0 ≤ M < N.
  • Pentru 10 puncte, M = 0 și 1 ≤ N ≤ 105;
  • Pentru alte 60 de puncte, 0 ≤ M < N ≤ 105;
  • Pentru alte 20 de puncte, a1 ≤ 106, N – aM ≤ 106, ai – ai-1 ≤ 106 pentru oricare 1 < i ≤ M și 1 ≤ < ≤ 106, 1 ≤ N ≤ 1012;
  • Pentru restul punctelor, M = 0 și 1 ≤ N ≤ 1018.

Exemplu

trepte.in trepte.out
6 1
3
4

Explicație

Cele 4 moduri de a urca scările sunt:

  • 0 → 1 → 2 → 4 → 5 → 6
  • 0 → 1 → 2 → 4 → 6
  • 0 → 2 → 4 → 5 → 6
  • 0 → 2 → 4 → 6

Trebuie să te autentifici pentru a trimite soluții. Click aici