Diferente pentru problema/reguli intre reviziile #2 si #11

Diferente intre titluri:

reguli
Reguli

Diferente intre continut:

== include(page="template/taskheader" task_id="reguli") ==
La ora de matematica, Gigel invata despre siruri. Pentru a intelege mai bine cum functioneaza acestea, el incearca mai intai sa construiasca niste siruri speciale astfel: alege un element $X$ care il considera ca fiind primul termen al sirului si afla apoi toate elementele sale urmarind niste reguli stabilite anterior. O regula pentru un sir este un vector {$x$} = {$(x{~1~}, x{~2~}, ... x{~k~})$} de numere intregi. Pornind de la elementul {$X$}, primul element al sirului, Gigel aduna {$x{~1~}$} pentru a obtine cel de-al doilea element al sirului, apoi la al doilea element al sirului aduna {$x{~2~}$} pentru a obtine cel de-al treilea element, etc. Dupa ce a utilizat toate cele $k$ numere, procedeul se repeta: la ultimul numar obtinut se aduna {$x{~1~}$}, etc.
Gigel construieste un sir de lungime $N$ folosind procedeul de mai sus. Problema apare cand, dupa un timp, el uita regula pe care a folosit-o pentru a-l genera. Sa se determine cea mai scurta regula care a generat sirului respectiv.
== include(page="template/badtests") ==
 
La ora de matematica, Gigel invata despre siruri. Pentru a intelege mai bine cum functioneaza acestea, el incearca mai intai sa construiasca niste siruri speciale pe baza anumitor criterii, siruri ce au ca termeni numai numere intregi. O regula {$a$} pentru un sir {$x$} este un vector {$(a{~1~}, a{~2~}, ... a{~K~})$}. Pe baza primului element al sirului, {$x{~0~}$}, si al vectorului {$a$}, sirul {$x$} este unic determinat prin relatia de recurenta:
 
%{$x{~i~}$} = {$x{~i-1~} + a{~i mod K~}$}%, daca {$i mod K$} este diferit de {$0$}, sau
%{$x{~i~}$} = {$x{~i-1~} + a{~K~}$}%, daca {$i mod K$} este {$0$}
 
Prin {$A mod B$} se intelege restul impartirii lui numarului {$A$} la {$B$}.
 
Gigel noteaza intr-un carnet primele $N$ elemente ale sirului {$x$}, {$x{~0~}, x{~1~}, ... x{~N-1~}$}, sir obtinut conform procedeului de mai sus. Bineinteles, dupa un timp, dupa ce Gigel uita regula pe care a folosit-o pentru a obtine sirul de pe carnet, apar intrebarile. Care este cel mai scurt vector {$a$} ( ca numar de elemente ), conform caruia se pot obtine primele $N$ elemente ale sirului {$x$}?
 
h2. Date de intrare
Fisierul de intrare este {$reguli.in$}. Pe prima linie a acestui fisier se afla {$N$}, numarul de elemente al sirului pe care ni le da Gigel (primele {$N$} elemente de fapt, pentru ca un sir este infinit). Urmatoarele $N$ linii contin cate un numar intreg.
Fisierul de intrare este {$reguli.in$}. Pe prima linie a acestui fisier se afla {$N$}. Urmatoarele $N$ linii contin cate un numar intreg, pe linia {$i+1$} aflandu-se valoarea elementului {$x{~i-1~}$}.
h2. Date de iesire
Pe prima linie a fisierului {$reguli.out$} se afla {$K$}, lungimea minima a unei reguli ce poate duce la sirul din fisierul de intrare. Urmeaza {$K$} linii, pe fiecare aflandu-se cate un numar intreg, descriind regula determinata sub forma vectorului {$x$} = {$(x{~1~}, x{~2~}, ... x{~k~})$}.
Pe prima linie a fisierului {$reguli.out$} se afla {$K$}, lungimea minima a unui vector {$(a{~1~}, a{~2~}, ... a{~k~})$} ce poate genera primele {$N$} elemente ale sirului {$x$}. Urmeaza {$K$} linii ce descriu vectorul determinat, pe linia $i+1$ aflandu-se {$a{~i~}$}.
h2. Restrictii
* {$5 ≤ N ≤ 100 000$}
* Numerele din sirul dat de Gigel se incadreaza intotdeauna in intregi cu semn pe 64 de biti
* {$5 ≤ N ≤ 500 000$}
* Primele $N$ numere din sirul {$x$} se incadreaza intotdeauna in intregi cu semn pe 64 de biti
h2. Exemplu
table(example). |_. reguli.in |_. reguli.out |
|7
|8
8
10
14
15
19
18
20
|3
2
4
h3. Explicatie
2, 4, -1
Cea mai scurta regula determinata este {$2, 4, -1$}. Se obtin astfel elementele:
$x{~1~}$ = $x{~0~}$ + $a{~1~}$ = {$8 + 2$} = $10$
$x{~2~}$ = $x{~1~}$ + $a{~2~}$ = {$10 + 4$} = $14$
$x{~3~}$ = $x{~2~}$ + $a{~3~}$ = {$14 + (-1)$} = $13$
$x{~4~}$ = $x{~3~}$ + $a{~1~}$ = {$13 + 2$} = $15$
$x{~5~}$ = $x{~4~}$ + $a{~2~}$ = {$15 + 4$} = $19$
$x{~6~}$ = $x{~5~}$ + $a{~3~}$ = {$19 + (-1)$} = $18$
$x{~7~}$ = $x{~6~}$ + $a{~1~}$ = {$18 + 2$} = $20$
 
 
== include(page="template/taskfooter" task_id="reguli") ==
 
 
 

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
1561