Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 509 Functii  (Citit de 5630 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Octombrie 14, 2007, 21:21:29 »

Aici puteţi discuta despre problema Functii.
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #1 : Octombrie 21, 2007, 12:35:10 »

Cod:
 Ea [b]trebui[/b] sa numere cate functii surjective definite pe multimea { 1,2,3,4..n } cu valori in multimea numerelor { 0,-1,1 } [i]exista[/i] astfel incat |f(1)| + |f(2)| + .. |f(n)| =S (toate sunt in modul) . 

Cuvantul "exista" e pus de la mine... Cred k ar trebui reparate aceste 2 greseli.  Smile
« Ultima modificare: Octombrie 21, 2007, 16:27:05 de către Marcu Florian » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #2 : Octombrie 21, 2007, 13:01:44 »

enuntul a fost modificat. De asemenea a fost modificata o restrictie (oops  Embarassed). Imi cer scuze ptr cei care s-au chinuit sa rezolve problema si au luat 0 din cauza enuntului.
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #3 : Octombrie 21, 2007, 14:52:29 »

Cum se poate calcula o expresie de genul [(x^y)-k] % p? Sau trebuie numere mari pt efectuarea ridicarii la putere?
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #4 : Octombrie 21, 2007, 16:02:35 »

Cod:
rest= x^y%p;
rest-=k;
while (rest<0) rest+=p;
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #5 : Octombrie 21, 2007, 16:13:00 »

Sau ca sa eviti while-ul:
Cod:
rest=(x^y)%p;
rest-=k%p;
if(rest<0) rest+=p;
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
c_sebi
Client obisnuit
**

Karma: 24
Deconectat Deconectat

Mesaje: 62



Vezi Profilul
« Răspunde #6 : Octombrie 21, 2007, 16:26:13 »

Cand trimit o sursa imi apare eroarea
Citat
Eroare de compilare in evaluator:
sh: g++: command not found

Memorat
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« Răspunde #7 : Octombrie 21, 2007, 17:06:31 »

Ar trebui sa se fi rezolvat problema acum.

Daca mai apare vreo chestie ciudata nu ezitati sa semnalati.
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #8 : Octombrie 21, 2007, 17:31:53 »

S-a mai modificat odata enuntul. Rezultatul trebuie afisat modulo 30103. Scuze  Embarassed
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« Răspunde #9 : Octombrie 21, 2007, 17:52:18 »

In sfarsit... habar n-aveam de la ce primeam WA...
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #10 : Iunie 05, 2008, 15:50:19 »

Care e cea mai rapida metoda de a calcula Comb(n,k) la problema asta? Am vazut ca in complexitate O(n*k) nu intra in timp...
Memorat
iepuras_binar
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #11 : Iunie 05, 2008, 16:58:43 »

E o problema...

Nu se poate unui X sa apartina mai multe Y..ori asta s ar intampla daca X ar fi mai mic ca Y cum e in ex vostru..intervalul 1 < n < 10000 e prost facut

Floryan a vazut asta primul...
« Ultima modificare: Iunie 05, 2008, 17:12:35 de către Alexandru B. » Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #12 : Iunie 05, 2008, 17:21:44 »

@florian: daca ti-ai face o matrice C[ i ][ j ] - combinari de i luate cate j, ai putea calcula independent fiecare linie in o(n). Gandestete cum ai putea sa scoti din C[ i ][ j ] pe C[ i ][ j+1 ]

@Alexandru_B: Nu e prost facut intervalul. Daca nu poate exista o functie ptr care proprietatile din enunt sa fie indeplinite mie mi se pare normal ca raspunsul sa fie 0.
« Ultima modificare: Iunie 05, 2008, 18:05:51 de către Stefan Istrate » Memorat
iepuras_binar
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #13 : Iunie 05, 2008, 17:48:42 »

Ok...scz credeam ca pur si simplu nu are cazuri imposibile.
Ce matrice este aia C[j]?
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #14 : Iunie 05, 2008, 17:59:42 »

@florian: daca ti-ai face o matrice C[ i ][ j ] - combinari de i luate cate j, ai putea calcula independent fiecare linie in o(n). Gandestete cum ai putea sa scoti din C[ i ][ j ] pe C[ i ][ j+1 ]

Nu prea am inteles ce vrei sa spui... Clasic se rezolva cu c[ i ][ j ]=c[ i-1 ][ j ]+c[ i-1 ][ j-1 ]. Eventual se reduce memoria, utilizand doar doi vectori [pt ultimile 2 linii]. Aceasta rezolvare are complexitate O(N*K) si nu intra in timp. Poti detalia putin ideea ta...?  Smile
« Ultima modificare: Iunie 05, 2008, 18:06:19 de către Stefan Istrate » Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #15 : Iunie 05, 2008, 18:11:18 »

Tie iti trebuie doar restul la impartirea cu 30103 (numar prim). Poti sa precalculezi resturile factorialelor, iar pentru combinari folosesti definitia: C(N, K) = N! / (K! * (N - K)!). Inmultesti un numar cu 2 inverse modulare ale celorlalte.
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #16 : Iunie 05, 2008, 18:48:14 »

Ok. Va multumesc amandorura pentru raspunsuri.
@devilkind : astept sa vii cu o explicatie putin mai detaliata... pare interesant ce ai spus, dar nu ma prind.

Apropop de inverse modulare. Nu am lucrat niciodata si cred ca e timpul sa ma apuc. Sper sa nu fiu prea offtopic.
Sa consideram o formula mai simpla, deci sa zicem ca am de calculat ( X/Y ) % P. In loc sa calculez impartirea, mai bine inmultesc X cu inversul lui Y. Inversul lui Y (de la mate) este 1/Y. Dar acum apare Fermat si spune ca X^(P-1) % P = 1 => X^(-1)=X(P-2) (mod P). Asadar, inversul lui Y [din formula noastra] devine Y^(P-2). Asadar, problema se reduce la egalitatea:

.                                     X/Y = X * Y^(P-2) ( mod P)

Iar in cazul problemei "functii", X este n!, iar Y este k! (si apoi (n-k)! ), iar P este 30103.

Cam asta stiam eu.. insa nu am lucrat niciodata cu asta. E bine ce am spus ? Daca am gresit in vreun loc, va rog sa imi spuneti. Multumesc!  Ok

Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« Răspunde #17 : Iunie 05, 2008, 19:03:57 »

C(n,k)= n!/k!*(n-k)! = n!/( (k-1)!*(n-k+1)! )   * (n-k+1)/k = C(n,k-1) * (n-k+1)/k
Memorat
stef2n
Nu mai tace
*****

Karma: 218
Deconectat Deconectat

Mesaje: 641



Vezi Profilul
« Răspunde #18 : Iunie 05, 2008, 19:07:42 »

Cam asta stiam eu.. insa nu am lucrat niciodata cu asta. E bine ce am spus ? Daca am gresit in vreun loc, va rog sa imi spuneti.
E corect.
Memorat

Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« Răspunde #19 : Iunie 05, 2008, 20:25:09 »

C(n,k)= n!/k!*(n-k)! = n!/( (k-1)!*(n-k+1)! )   * (n-k+1)/k = C(n,k-1) * (n-k+1)/k

Interesanta idee. E bn de stiut lucrul asta. Multumesc.  Very Happy
 
Multumesc si tie, Stefan Istrate.  Ok
Memorat
cosmin79
Strain
*

Karma: 36
Deconectat Deconectat

Mesaje: 46



Vezi Profilul
« Răspunde #20 : August 13, 2009, 19:43:28 »

Salut.Am o nelamurire la problema asta.Eu m-am gandit cam asa:
E clar ca daca |f(1)| + |f(2)| + .. |f(n)| =S exista fix S din cele n valori din domeniu egale cu 1 sau -1 si mai sunt deci n-S valori de 0.Ca functiile cautate sa fie sigur surjective Aleg cate o valoare de 1 si de -1(e garantat faptul ca vor fi zerouri).Sunt n*(n-1)posibilitati de alegere a celor 2 valori de 1 si -1.Pe urma au mai ramas S-2 valori de 1 sau -1 de pus.Sunt comb[n-2][S-2] metode de a alege o configuratie de S-2 valori din n-2 posibile.Pentru fiecare configuratie sunt 2^(S-2) metode de a alege 1 sau -1.
Ca urmare => rezultatul cautat ar trebui sa fie : n*(n-1)*comb[n-2][S-2]*2^(S-2) ,avand grija la operatiile in modul. Pe exemplu n=5,S=3 => inlocuind: 5*4*comb[3][1]*2^1=5*4*3*2=120 ,nu 60. Poate cineva sa ma lamureasca unde gresesc in rationament?  Think
Memorat
costyrazvy
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 6



Vezi Profilul
« Răspunde #21 : Aprilie 10, 2014, 13:30:01 »

Imi puteti da si mie o functie invmodular(x)Huh Ca nu inteleegg
Memorat
AlexandruValeanu
Vorbaret
****

Karma: 29
Deconectat Deconectat

Mesaje: 167



Vezi Profilul
« Răspunde #22 : Aprilie 10, 2014, 13:35:20 »

Despre invers modular poti citi aici: http://www.infoarena.ro/problema/inversmodular.
Memorat
valentin50517
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 8



Vezi Profilul
« Răspunde #23 : Iunie 07, 2016, 12:03:22 »

poate cineva sa-mi explice de ce 60 dar nu 80? problema consta in cate combinari de {1,0,-1} luate cate N exista astfel incat suma modulelor lor sa fie S sau eu ceva nu am inteles corect? dupa logica mea ar trebui sa fie C(N,K)*2^K. Brick wall
Memorat
Djok
Client obisnuit
**

Karma: 10
Deconectat Deconectat

Mesaje: 71



Vezi Profilul
« Răspunde #24 : Iunie 07, 2016, 12:56:34 »

nu e chiar 2^K (unde K == sum)

e (2^K)-2

1) excluzi mulțimea vidă
2) surjectivitatea înseamnă că trebuie să ai valori și de -1 și de 0 și de 1, cu alte cuvinte n-ai voie să ai doar 0 și 1 sau doar 0 și -1
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines