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!!
927  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori : Decembrie 16, 2009, 19:29:43
IN fond si la urma urmei e bine ce am facut eu nu?
928  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori : Decembrie 16, 2009, 12:27:34
MErci fain as mai vrea sa-mi spuneti ceva is incepator si nu ma stiu adica nu stiu EXACt ce inseamna complexitate, stiu ca inseamna timpul de executie dar imi puteti explica mai "amanuntit"? Si imi poti detalia acea metoda daca nu te supara? MERCI  Winner 1st place
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
Cod:
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.
930  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori : Decembrie 15, 2009, 20:34:45
Aham dar totusi vine [a,b], le parcurg pe toate si fac o structura repetitiva in care calculez suma cifrelor si apoi verific, nu stiu intervalul poate fi longint Sad e cam mare
931  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Divizori : Decembrie 15, 2009, 19:53:41
nu am timp nu stiu cat poti tu de "repede", adica cat mai optim
932  infoarena - concursuri, probleme, evaluator, articole / Informatica / Divizori : Decembrie 15, 2009, 14:27:33
Am o problema de genul: Sa se gaseasca toate numerele din intervalul [a,b] care sa se divida prin suma cifrelor(ex. 36->3+6=9 si 9|36). Exista vreo metoda optima de rezolvare?
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
Cod:
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 consecutiv
Scuze Smile
934  infoarena - concursuri, probleme, evaluator, articole / Informatica / 3 divizorii proprii-improprii : Decembrie 15, 2009, 13:16:04
Am o problema de genul: sa se gaseasca toate nr. din intervalul [a,b] care sa aiba exact 3 divizori (improprii+proprii). Aceste numere sunt patralele perfecte de numere prime nu?(ex. 25(5^5),49(7^7).. si o idee de rezolvare plz(eu m-am gandit cu ciurul lui eratostene).Ms
935  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Help please : Noiembrie 28, 2009, 15:29:03
Dar oricum pentru a afla solutia optima dintre 2 probleme pot sa fac acasa  Winner 1st place si eu nu am versiunea DOS am versiunea pentru Windows si nu merge linkul ala adica nu stiu unde e fisierul acela ...
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
937  infoarena - concursuri, probleme, evaluator, articole / Informatica / Help please : Noiembrie 28, 2009, 11:56:00
Buna. As vrea sa stiu daca se poate stii timpul de executie pentru o anumita valoare si pentru un anumit algoritm
ex. Pentru algoritmul lui Euclid, valorile 12 si 42.
HINT: Lucrez in Pascal (FreePascal)
Pagini: 1 ... 36 37 [38]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines