infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Dragos din Septembrie 08, 2010, 12:00:19



Titlul: O problema
Scris de: Dragos din Septembrie 08, 2010, 12:00:19
Fie A multimea tuturor numerelor naturale de forma 2x * 3y * 5z cu x,y,z=0,1,2,....
Aflati si afisati primele N elemente ale  multimii A in ordine crescatoare.

Complexitate: O(N).

Imi da si mie cineva o idee?


Titlul: Răspuns: O problema
Scris de: Simoiu Robert din Septembrie 08, 2010, 12:25:06
Deci stai sa inteleg : primul element al multimii o sa fie 2 * 3 * 5, al doilea 22 * 32 * 52 si tot asa ?


Titlul: Răspuns: O problema
Scris de: Dragos din Septembrie 08, 2010, 12:32:28
Deci stai sa inteleg : primul element al multimii o sa fie 2 * 3 * 5, al doilea 22 * 32 * 52 si tot asa ?

cu x,y,z=0,1,2,....


Nu!
Primul element este 1=20 * 30 * 50.
Oricum nu stiu cat de relevant este.
Algoritmul banuiesc ca este acelasi:-?.


Titlul: Răspuns: O problema
Scris de: FMI Romila Remus Arthur din Septembrie 08, 2010, 12:35:18
Ar veni 20*30*50 apoi 21*30*50,20*31*50 , 22*30*50 , 20*30*51 , 21*31*50.
Daca ar fi cum spuneti voi sarcina ar trebui sa fie 2x*3x*5x,x=0,1,2.


Titlul: Răspuns: O problema
Scris de: Dragos din Septembrie 08, 2010, 12:41:48
Primele 8 numere sunt:
1; 2; 3; 4; 5; 6; 8; 9 adica 20*30*50, 21*30*50,20*31*50 , 22*30*50 , 20*30*51 , 21*31*50...

2x*3x*5x,x=0,1,2.
Nu este aceiasi putere pentru 2,3,5 ci sunt puteri diferite.


Titlul: Răspuns: O problema
Scris de: Andrei Parvu din Septembrie 08, 2010, 14:19:42
Vom genera solutia intr-un vector (sa zicem V), care la final va avea primele N elemente ale multimii in ordine sortata.
Bineinteles V[ 1 ] = 1; Vom dori sa generam vectorul deja in ordine crescatoare, asa ca vom tine trei pointeri (p1, p2, p3) cu urmatoarea semnificatie (sa presupunem ca pana acum am generat primele K elmente):
p1 = cel mai mic element din V care inmultit cu 2 este mai mare decat V[ k ]
p2 = cel mai mic element din V care inmultit cu 3 este mai mare decat V[ k ]
p3 = cel mai mic element din V care inmultit cu 5 este mai mare decat V[ k ].

Asadar la pasul K, luam minimul dintre (V[p1] * 2, V[p2] * 3, V[p3] * 4), il trecem la pozitia V[K + 1] si incrementam pointerul corespunzator maximului.

Bineinteles ca inital p1 = p2 = p3 = 1;

Sper ca este ok solutia si explicatia.


Problema nu s-a dat la admitere la Informatica la Unibuc?


Titlul: Răspuns: O problema
Scris de: Savin Tiberiu din Septembrie 08, 2010, 15:26:35
@parvu: la pointerii aia cred ca vroiai sa zici cel mai mic element din V care inmultit cu X (X = 2, 3, 5) sa fie mai mare decat V[k]. Cum ai zis tu toti pointerii ar fi pe V[k].


Titlul: Răspuns: O problema
Scris de: Andrei Parvu din Septembrie 08, 2010, 15:47:11
@tibi: da, ai dreptate, am modificat


Titlul: Răspuns: O problema
Scris de: Dragos din Septembrie 08, 2010, 16:57:42
In primul rand multumesc pentru raspuns.
In al doilea rand nu trebuie sa selectez minimul dintre (V[p1] * 2, V[p2] * 3, V[p3] * 4)?
In al treilea rand, este de la admiterea de anul acesta de la Unibuc dar problema mi s-a parut familiara(sigur nu exista pe infoarena sau pe campion mai degraba:-? ) insa nu-mi aduc aminte s-o fi facut.
Probabil doar am citit-o si negasind solutia am lasat-o balta.


Titlul: Răspuns: O problema
Scris de: Savin Tiberiu din Septembrie 08, 2010, 17:15:31
Da iei minimul, parvu asta e cam neatent :)
Eu parca sa zic ca am vazut-o la o nationala pe la gimnaziu.


Titlul: Răspuns: O problema
Scris de: Andrei Parvu din Septembrie 08, 2010, 21:24:28
Da, sunt cam neatent  :P. Daca dadeam admitere la Unibuc, probabil nu intram  :D


Titlul: Răspuns: O problema
Scris de: Stefan Istrate din Septembrie 09, 2010, 08:20:16
Intrai. :P Ultima medie la buget a fost 5.45.


Titlul: Răspuns: O problema
Scris de: Cezar Mocan din Septembrie 09, 2010, 20:59:01
Cred ca am avut-o eu la OJI intr-a 8-a :). OJIGim 2008 cred...


Titlul: Răspuns: O problema
Scris de: Parfene Narcis din Septembrie 09, 2010, 21:29:39
Asta este problema lui Hamming (sau sirul lui Hamming) care nu are legatura cu distanta Hamming. E ceva mentionat pe aici:
http://en.wikipedia.org/wiki/Regular_number