Se dau n numere naturale nenule. Ordonați descrescător cele n numere după numărul lor de divizori.
Obtin TLE la ultimele 2 teste si nu stiu de ce.
Răspunsuri la întrebare
Răspuns de
4
function f(a:integer):integer;
var i:integer;
begin
for i:=1 to a do
if (a mod i = 0) then
f+=1;
end;
var
a,b,c:array of integer;
i,n,maxd,max,min,l:integer;
begin
readln(t,n);
setlength(a,n);
setlength(b,n);
setlength(c,n);
for i:=0 to n-1 do
read(t,a[i]);
min:=a[1];
max:=a[2];
for i:=0 to n-1 do
begin
if a[i]<min then min:=a[i];
if a[i]>max then max:=a[i];
end;
l:=0;
for min:=min to max do
for i:=0 to n-1 do
if a[i]=min then
begin
c[l]:=min;
inc(l);
end;
for i:=0 to n-1 do
b[i]:=f(c[i]);
maxd:=b[1];
for i:=0 to n-1 do
if b[i]>maxd then maxd:=b[i];
for maxd:=maxd downto 0 do
for i:=0 to n-1 do
if b[i]=maxd then write(t,c[i],' ');
end.
var i:integer;
begin
for i:=1 to a do
if (a mod i = 0) then
f+=1;
end;
var
a,b,c:array of integer;
i,n,maxd,max,min,l:integer;
begin
readln(t,n);
setlength(a,n);
setlength(b,n);
setlength(c,n);
for i:=0 to n-1 do
read(t,a[i]);
min:=a[1];
max:=a[2];
for i:=0 to n-1 do
begin
if a[i]<min then min:=a[i];
if a[i]>max then max:=a[i];
end;
l:=0;
for min:=min to max do
for i:=0 to n-1 do
if a[i]=min then
begin
c[l]:=min;
inc(l);
end;
for i:=0 to n-1 do
b[i]:=f(c[i]);
maxd:=b[1];
for i:=0 to n-1 do
if b[i]>maxd then maxd:=b[i];
for maxd:=maxd downto 0 do
for i:=0 to n-1 do
if b[i]=maxd then write(t,c[i],' ');
end.
Alte întrebări interesante
Engleza,
8 ani în urmă
Matematică,
8 ani în urmă
Biologie,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă