#706
Prin fibosir(N)
înţelegem un şir construit prin adăugarea la sfârşit (concatenare) a primilor N
termeni nenuli ai şirul Fibonacci definit astfel:
F
1
=1
F
2
=1
F
N
= F
N-1
+ F
N-2
Pentru N
valoare naturală dată, să se elimine din fibosir-ul construit M
secvenţe disjuncte de lungime K
fiecare, astfel încât numărul format din cifrele rămase în fiboşir să fie maxim.
Lot Juniori, Baia Mare, 2013
Problema | Fibosir | Operații I/O |
![]() fibosir.in /fibosir.out
|
---|---|---|---|
Limita timp | 0.5 secunde | Limita memorie |
Total: 4 MB
/
Stivă 4 MB
|
Id soluție | #58124894 | Utilizator | |
Fișier | fibosir.cpp | Dimensiune | 1.69 KB |
Data încărcării | 15 Mai 2025, 11:08 | Scor / rezultat | Eroare de compilare |
fibosir.cpp:1:1: error: expected unqualified-id before string constant "# include <fstream>\n# include <cstring>\n# include <algorithm>\nusing namespace std;\n\nifstream f(\"fibosir.in\");\nofstream g(\"fibosir.out\");\n\nint N, M, K, la, lb, lc;\nchar s[420001], a[500], b[500], c[500];\n\nvoid add(char *a, char *b, char *c)\n{\n int i = 0 , j = 0;\n int x, k, t;\n\n x = k = t = 0;\n while (i < la && j < lb)\n {\n x = (a[i] - 48) + (b[j] - 48) + t;\n c[k] = (x % 10) + 48;\n t = x/10;\n ++i; ++j; ++k;\n }\n while (i < la)\n {\n x = (a[i] - 48) + t;\n c[k] = (x % 10) + 48;\n t = x/10;\n ++i; ++k;\n }\n while (j < lb)\n {\n x = (b[j] - 48) + t;\n c[k] = (x % 10) + 48;\n t = x/10;\n ++j; ++k;\n }\n if (t)\n {\n c[k] = t + 48;\n ++k;\n }\n c[k] = '\\0';\n lc = k;\n}\nint main()\n{\n char max;\n int i, j, poz, nr;\n\n f >> N >> M >> K;\n\n //construim fibosir(n)\n a[0] = b[0] = s[0] = s[1] = '1';\n a[1] = b[1] = s[2] = '\\0';\n la = lb = lc = 1;\n for (i=2; i<N; ++i)\n {\n add(a, b, c);\n memcpy(a, b, lb);\n memcpy(b, c, lc);\n reverse(c, c + lc);\n la = lb; lb = lc;\n strcat(s, c);\n }\n N = strlen(s);\n i = 0;\n while (i < N)\n {\n for (j=1, max = '0'; j<=M; ++j)\n {\n if (s[i + j*K] > max)\n {\n max = s[i + j*K];\n poz = j;\n if (max == '9') break;\n }\n }\n if (s[i] < max) // jump\n {\n i += (poz * K);\n M -= poz;\n }\n else\n {\n g << s[i++];\n }\n }\n return 0;\n}" ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Fibosir 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ă.