Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
[TEMA] problema vraji
Last Updated: Aug 21 2014 14:07, Started by
TheUnforgiver
, Aug 21 2014 01:05
·
0
#1
Posted 21 August 2014 - 01:05
http://campion.edu.r...ion=view&id=827
#include <iostream> #include <fstream> using namespace std;; ifstream fin("vraji.in"); ofstream fout("vraji.out"); int main() { int a,b,p,v,n,i,prod[100],max,j,min; fin>>n; fin>>p>>v; max=p*v; prod[0]=max; for (i=1;i<n;i++) { fin>>p>>v; prod[i]=p*v; if (prod[i]>prod[i-1]) max=prod[i]; } min = 0; a=prod[0]; for (i=1;i<n;i++) { b=prod[i]; while (a!= { if (a> a=a-b; else if(a< b=b-a; } if (a>min) min=a; } fout<<max<<endl; fout<<min; fin.close(); fout.close(); return 0; } 40 din 100. cine ma poate ajuta sa-mi arate ce-am gresit? |
#4
Posted 21 August 2014 - 03:16
1)
if (prod[i]>prod[i-1]) max=prod[i];Nu trebuie sa compari prod[i] cu precedentul, ci cu maximul universal. Iti dau un exemplu, ai 1, 5, 30, 10, 20. Programul il va face maxim pe 5, apoi pe 30, peste 10 va trece, dar va vedea ca 20 este mai mare decat 10 si il va pastra ca maxim. 2) if (a>min) min=a;Daca programul tau gaseste primul cmmdc si e mai mare decat 0(normal) il modifica bine pe min. Dar a-ul tau nu are cum sa creasca pentru ca il tot transformi intre cmmdc-ul dintre el si urmatorul numar. In cel mai bun caz ramane constant, dar este posibil sa si scada, daca ai gasit un nou cmmdc mai mic care se transforma in cmmdc-ul universal. Incearca sa scoti linia asta, sa stergi variabila min si sa afisezi doar a-ul la sfarsit. Edited by Ersaro, 21 August 2014 - 03:16. |
#5
Posted 21 August 2014 - 11:38
am facut asa, am luat 100. dar tot nu inteleg ceva
a=prod[0]; for (i=1;i<n;i++) { b=prod[i]; while (a!= { if (a> a=a-b; else if(a< b=b-a; } } eu inteleg asa. ia primul produs si apoi pe rand pe toate celelalte si face cmmdc. dar pe exemplul 3 4 2 6 6 (al doilea de pe campion cu ultimele 2 schimbate) 6 8 cmmdc intre primul (4*2=8) si ultimul (6*8=48) e 8 nicidecum 4. si e gresit. |
#6
Posted 21 August 2014 - 13:23
citeste si tu explicatiile :
3 - ‘elevi vrăjitori’ elev 1 : Număr total de obiecte =4*2=8 elev 2 : Număr total de obiecte=6*8=48 elev 3 : Număr total de obiecte=6*6=36 48 este cel mai mare număr de obiecte aduse de un vrăjitor 4 este cel mai mare număr de cutii pe care îl poate primi fiecare elev 4=cmmdc(8,48,36). E adevarat ca cmmdc(8,48)=8 dar cmmdc(cmmdc(8,48),36)=4.Tu faci cmmdc a tuturor numerelor obtinute,nu cmmdc a doua cate doua. |
#7
Posted 21 August 2014 - 13:42
da, adevarat. dar sursa nu memoreaza ceea ce ai spus tu. 2 cate 2 . primul cu al doilea. primul cu al treilea etc. ci doar primul cu ultimul. si totusi am luat 100p
|
#8
Posted 21 August 2014 - 14:02
Mah,din cate am vazut pe cod tu pastrezi in a cmmdc-ul minim.Faci cmmdc(a,celelalte valori din vector).
Tu nu vezi ca ai un for acolo ? Iei prod[0] si in el pastrezi cmmdc-ul tuturor. prod[0]=cmmdc[prod[0],prod[1]) apoi prod[0]=cmmdc[prod[0],prod[2]),unde prod[0] e deja cmmdc[prod[0],prod[1]) si asa in prod[0] memorezi cmmdc-ul tuturor elementelor din vector.Tu cum ai scris algoritmul ala fara sa te gandesti la el ? |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users