Inbox for mugurel_ionut@yahoo.com    Yahoo! - My Yahoo!     Options - Sign Out - Help
Mail    Addresses    Calendar    Notepad   

Download Attachments
    Prev | Next | Inbox
From: "Mihai Patrascu" <mihai_p@pcnet.ro>  | Block Address | Add to Address Book
To: "probleme" <probleme@ldc.ro>
Subject: probleme mai vechi
Date: Tue, 10 Apr 2001 13:34:38 +0300

--- combinari de N luate cate K ---

Ce propune Cristi nu prea are logica, deoarece numerele pe care vrea sa
le-nmulteasca nu sunt intregi.

Rezolvarea in care inmultesti numerele de la N-K+1 la N si apoi imparti 
la
1..K nu e prea grozava. O idee pe care am implementat-o pe la cateva 
loturi
ar fi sa factorizezi. Tii un tabel cu toate numerele prime pana la N si 
in
loc sa inmultesti (sau sa imparti) cu X adaugi (sau scazi) in tabel 
puterile
la care apar numerele prime in X. La final, inmultesti toate nr prime 
la
puterea rezultata. Totusi, nici asta nu intra in timp.

Ideea e ca pentru N! se poate determina la ce putere apare un numar 
prim P.
E ceva de genul N/P + N/P**2 + N/P**3... Pentru fiecare numar prim 
determini
la ce putere apare in N!, scazi puterile pt K! si (N-K)! si il 
inmultesti la
puterea rezultata. Bineinteles, baza 10**9.


--- Belman-Ford pe reale ---

Mai demult a fost o discutie despre problema cauzata de precizie la
implementare. Cineva a zis ca o solutie buna si portabila ar fi:
        tmp = a[i] + d[i][j];
        if(tmp < a[j]) ...

Atunci chiar am zis ca merge, dar curand mi-am dat seama ca nu merge si 
de
atunci tot uit sa va zic. Mai mult ca sigur ca nu merge. Compilatorul 
va
optimiza cele doua accese la tmp si va pastra valoarea in registru cu
precizia maxima. ANSI C nu numai ca permite asta, dar si incurajeaza. 
Tocmai
de asta a fost creat volatile. Daca vrei sa mearga, trebuie sa declari 
tmp
ca fiind volatile. Dar asta iti va incetini groaznic codul.


--- Joc logic ---

Mihai Stroe are dreptate. E cam ca problema aia din 96. Faci NIM pe
distantele intre piatra 1 si 2, 3 si 4, 5 si 6 etc. Daca N e un numar 
impar,
shiftezi table la dreapta cu 1 si adaugi o piatra in pozitia 1.

Inca o observatie pentru Mihai. Nu suntem la colegiul tau sa faci pe 
profu
cu noi. Suntem programatori seriosi si desi nu suntem la nivelul tau, 
nu
suntem nici noi prea slabi :-). Cine trimite o problema poate chiar are
nevoie de o rezolvare rapid. Asa ca nu fa chestii d'astea cu va trimit 
peste
3 zile, va mai las sa va ganditi etc. Cine nu are nevoie urgenta de
rezolvare poate sa isi ia un timp de gandire inainte sa citeasca 
rezolvarea.
As sugera orice RE: care include o rezolvare sa includa si [solutie] in
subject, ca sa nu-l citim daca vrem sa ne mai gandim putin (RE:-urile 
fara
[solutie] ar putea cere clarificari si p-alea tre sa la citim). Oricum, 
daca
scrii solutia imediat evitam si fazele alea jenante in care ne tii trei 
zile
ca ai o solutie si apoi zici ca de fapt cand te-ai apucat sa scrii 
ti-ai dat
seama ca iti scapa ceva.

mihai_p

     Prev | Next | Inbox
Download Attachments

Yahoo! Messenger - Send instant messages to friends!
Address Book · Alerts · Auctions · Bill Pay · Bookmarks · Briefcase · Broadcast · Calendar · Chat · Classifieds · Clubs · Companion · Domains · Experts ·Games · Greetings · Home Pages · Invites · Mail · Maps · Member Directory · Messenger · My Yahoo! · News · PayDirect · People Search · Personals · Photos · Shopping · Sports · Stock Quotes · TV · Travel · Weather · Yahooligans · Yellow Pages · more...

Privacy Policy- Terms of Service - Guidelines
Copyright © 1994-2001 Yahoo! Inc. All rights reserved.