Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: 231 Secretul Cifrului  (Citit de 3280 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
domino
Echipa infoarena
Nu mai tace
*****

Karma: 281
Deconectat Deconectat

Mesaje: 1.340



Vezi Profilul WWW
« : Aprilie 09, 2006, 00:52:26 »

Aici puteţi discuta despre problema Secretul Cifrului.
Memorat
gogu
Client obisnuit
**

Karma: 42
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #1 : Aprilie 10, 2006, 17:44:36 »

Am redus complexitatea de la O(N*N) la O(N*D), unde D este numarul de divizori ai lui K, dar a trebuit sa includ un vector de 2000 de constante in sursa.
Imi poate spune cineva cum as putea precalcula inteligent toti inversii modulari fata de un numar prim?
Vad ca se dau multe probleme unde se afiseaza rezultatul modulo un numar prim si as vrea sa pot face si o impartire la nevoie.
Memorat
silviug
Echipa infoarena
Nu mai tace
*****

Karma: 193
Deconectat Deconectat

Mesaje: 485



Vezi Profilul
« Răspunde #2 : Aprilie 10, 2006, 20:46:23 »

Poti calcula inversul modular al unui numar in log(P) unde P este numarul prim fata de care faci modulo. Deci iese P log P pentru toate numerele mai mici ca P. Este suficient ?  (Sper sa fi inteles ce vrei).

Pentru a calcula inversul modular al unui numar x fata de un numar prim ai doua posibilitati:

1) x^(P - 1) % P = 1 -> x^(P-2) * x = 1 -> x^(-1) = x^(P - 2)
2) Folosesti Euclid Extins pentru perechea (x, P) care are GCD = 1. Rezulta doua numere a si b (calculate de Euclid Extins) astfel incat a * x  + b * P = 1 -> a * x = 1 (mod P) si a (cu cateva modificari) este inversul pe care il cauti. Metoda merge si pentru P neprim atata timp cat GCD(x, P) = 1 - conditie necesara existentei inversului de altfel. Citeste Cormen la capitolul de Teoria numerelor pentru mai multe detalii.

Daca stiai lucrurile astea, imi pare rau ca te-am batut la cap Smile Poate sunt folositoare altcuiva.

Silviu
Memorat

"Don't gain the world and lose your soul, wisdom is better than silver or gold." [Bob Marley - Jamaican reggae musician & singer (1945 - 1981)]
gogu
Client obisnuit
**

Karma: 42
Deconectat Deconectat

Mesaje: 98



Vezi Profilul
« Răspunde #3 : Aprilie 10, 2006, 22:32:06 »

Multumesc mult!
Sunt chestii foarte utile.
Parca prima metoda e mai comod de implementat dar a doua cred ca se poate aplica pentru mai multe probleme.
Memorat
silviug
Echipa infoarena
Nu mai tace
*****

Karma: 193
Deconectat Deconectat

Mesaje: 485



Vezi Profilul
« Răspunde #4 : Aprilie 11, 2006, 00:35:15 »

Exact! Wink
Memorat

"Don't gain the world and lose your soul, wisdom is better than silver or gold." [Bob Marley - Jamaican reggae musician & singer (1945 - 1981)]
cristi8
Vizitator
« Răspunde #5 : Aprilie 11, 2006, 14:06:20 »

 Shocked 
informatii foarte utile! Thumb up
mersi silviu
Memorat
gh09
Strain
*

Karma: -2
Deconectat Deconectat

Mesaje: 38



Vezi Profilul
« Răspunde #6 : Februarie 01, 2009, 15:57:44 »

cum trebuie facuta criptarea? prin permutarea tuturor numerelor cu o anumita pozitie x spre dreapta sau spre stanga?
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #7 : Noiembrie 20, 2012, 17:34:24 »

Salut!

Daca nu am inteles gresit, problema se reduce la determinarea P(n) astfel incat P^k=e. Eu nu gasesc decat 2 permutari (2,3,1) si (3,1,2)  Think (am verificat folosind un program). Imi poate spune cineva , va rog , care este a 3-a permutare ? Multumesc!
Memorat
freak93
Echipa infoarena
Nu mai tace
*****

Karma: 342
Deconectat Deconectat

Mesaje: 819



Vezi Profilul
« Răspunde #8 : Noiembrie 20, 2012, 18:52:47 »

Permutarea (1, 2, 3) mai este
Memorat
SebiSebi
Nu mai tace
*****

Karma: 76
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #9 : Noiembrie 20, 2012, 19:18:46 »

Multumesc! Eu nu am luat-o in considerare deoarece m-am gandit ca permutarea trebuie sa fie identica cu prima numai si numai dupa k criptari.
Memorat
DxH5dIMHN
Strain


Karma: -5
Deconectat Deconectat

Mesaje: 9



Vezi Profilul
« Răspunde #10 : Noiembrie 24, 2012, 19:05:40 »

@gh09, @SebiSebi: Indiferent daca faci shift circular stanga sau dreapta, pentru N=3 si K=3 exista 3 solutii: (2,3,1) (3,1,2) (1,2,3) - (3,1,2) (2,3,1) (1,2,3) - (1,2,3) (1,2,3) (1,2,3) - (daca N este numar prim atunci K=N sau oricare dintre multiplii lui N)



« Ultima modificare: Noiembrie 26, 2012, 18:18:16 de către Soucup Nicolae Silviu » Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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