#149
scara
Claudia vrea să construiască o scară cu N
trepte astfel încât prima treaptă să fie la înălţimea 0
şi ultima treaptă să fie la înălţimea H
. Fiind pusă pe glume, ea îi cere arhitectului să proiecteze o scară neobişnuită, în care treptele sunt dispuse astfel încât, la un moment dat, să poţi urca, coborî sau rămâne la acelaşi nivel. Pentru a fi uşor de urcat sau coborât, valoarea absolută a diferenţei dintre înălţimile la care se află oricare două trepte consecutive trebuie să fie mai mică sau egală cu o valoare dată, K
. Nicio treaptă nu se poate afla la o înălţime negativă sau la o înălţime mai mare decât H
.
Scrieţi un program care să determine numărul de scări diferite cu N
trepte, ce pot fi construite respectând cerinţele Claudiei. Deoarece numărul de scări poate fi foarte mare, determinaţi restul împărţirii acestui număr la 666013
.
Urmasii lui Moisil, Iasi, 2013
Problema | scara | Operații I/O |
![]() scara.in /scara.out
|
---|---|---|---|
Limita timp | 1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #58088493 | Utilizator | |
Fișier | scara.cpp | Dimensiune | 1015 B |
Data încărcării | 13 Mai 2025, 15:03 | Scor / rezultat | Eroare de compilare |
scara.cpp:1:1: error: expected unqualified-id before string constant "#include<cstdio>\n#define HMAX 105\n#define MOD 666013\nusing namespace std;\nint A[HMAX][HMAX], P[HMAX][HMAX], n, h, k;\n\nvoid mul(int A[HMAX][HMAX], int B[HMAX][HMAX]) {\n int C[HMAX][HMAX];\n for(int i = 0; i <= h; ++i)\n for(int j = 0; j <= h; ++j) {\n long long sum = 0;\n for(int k = 0; k <= h; ++k)\n sum += (long long)A[i][k] * B[k][j];\n C[i][j] = sum % MOD;\n }\n\n for(int i = 0; i <= h; ++i)\n for(int j = 0; j <= h; ++j)\n A[i][j] = C[i][j];\n}\n\nint main() {\n freopen(\"scara.in\", \"r\", stdin);\n freopen(\"scara.out\", \"w\", stdout);\n scanf(\"%d%d%d\", &n, &h, &k);\n\n for(int j = 0; j <= h; ++j) {\n A[j][j] = 1;\n for(int i = 0; i <= h; ++i)\n if(j - k <= i && i <= j + k)\n P[i][j] = 1;\n }\n\n for(--n; n; n >>= 1) {\n if(n & 1)\n mul(A, P);\n mul(P, P);\n }\n\n printf(\"%d\\n\", A[0][h]);\n return 0;\n}" ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema scara face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.