Afişează mesaje
|
Pagini: 1 ... 36 37 [38]
|
926
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori
|
: Decembrie 17, 2009, 09:30:04
|
Merci Andrei Grigorean, man eu nu am invatat subprograme, au nu am invatat nici vectorii, am facut PASCALUL (nu c++, dar stiu si ceva din el) de 3 zile, dar cum eu is mai curios il stiu cam de cand am inceput pseudocodul, am facut probleme de pe infoarena, destul de grele, ma pasioneaza, dar nu am facut subprograme si inca nu am experienta necesara ca voi sa puteti vorbi cu mine "asa". Oricum peste 1 an poate putem vorbi "asa". Merci!!
|
|
|
929
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori
|
: Decembrie 15, 2009, 21:22:39
|
Ce este metoda divide et impera? Si in legatura cu problema am facut-o asa nu stiu daca pot sa o fac mai optim program intervalsuma; var sum:array[1..1000000] of longint; a,b,i,l,l1,j:longint; stop:boolean; begin write('a='); readln(a); write('b='); readln(b); write('Numerele din intervalul [',a,',',b,'] care se divid prin suma cifrelor sale sunt: '); l:=99; l1:=100; stop:=false; if (b<100) or (a<100) then begin if b<100 then l:=b; for i:=a to l do begin sum[i]:=i mod 10 + i div 10; if i mod sum[i]=0 then begin write(i,' '); stop:=true; end; end; end; if l<>b then begin if a>l then l1:=a; if b<1000 then l:=b else l:=999; for i:=l1 to l do begin sum[i]:=i mod 10 + (i div 10) mod 10 + (i div 10) div 10; if i mod sum[i]=0 then begin write(i,' '); stop:=true; end; end; end; if l<>b then begin if a>l then l1:=a else l1:=1000; for i:=l1 to b do begin j:=i; repeat sum[i]:=sum[i]+j mod 10; j:=j div 10; until j=0; if i mod sum[i]=0 then begin write(i,' '); stop:=true; end; end; end; if not stop then write('----nu exista numere din acest interval----'); readln; end.
|
|
|
933
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: O intrebare
|
: Decembrie 15, 2009, 14:09:59
|
Bun am vazut p1,p2 si acum cum vad eu daca un numar este prim? eu m-am gandit cu ciurul lui e., dar trebuie sa verific divizorii lui 2 in colo, chiar daca radicalii incep de la 100 de exemplu .... e bine asa? Mai precis program ciur2; var a,b,i,j,p1,p2:longint; v:array[1..1000000] of longint; stop:boolean; begin write('a=');readln(a); write('b=');readln(b); if sqrt(a)=trunc(sqrt(a)) then p1:=trunc(sqrt(a)) else p1:=trunc(sqrt(a))+1; p2:=trunc(sqrt(b)); if p1>p2 then stop:=false else begin for i:=2 to p2 do for j:=2 to p2 div 2 do v[i*j]:=1; for i:=p1 to p2 do if v[i]=0 then begin stop:=true; write(sqr(i),' '); end; end; if not stop then writeln('Nu exista numere cu 3 divizori in intervalul [',a,',',b,']'); readln; end. [editat de moderator] daca tot stii sa-ti editezi mesajele, nu mai posta consecutivScuze
|
|
|
936
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Help please
|
: Noiembrie 28, 2009, 12:17:26
|
Deci sa-ti explic mai concret. SA zicem ca vrea sa fac problema A+B de pe site. Si vreau sa vad timpul de rulare pentru valorile 150 si 345 de exemplu, sa vad daca timpul e mai mic sau cel putin egal cu limita pe care o da acolo sa nuil trimit degeaba sau daca vreau sa fac o comparare intre 2 alg. sa vad care e mai optim. Merci
|
|
|
|