Informatică, întrebare adresată de valifloricescu, 9 ani în urmă

Să se scrie un număr natural n ca sumă de pătrate perfecte. De asemenea, numărul termenilor trebuie să fie minim.

Răspunsuri la întrebare

Răspuns de stassahul
0
var a:array of integer;
n,b,l,i,s,q,p:integer;

begin
writeln('Numarul: ');
read(n);
setlength(a,n);

for i:=0 to n-1 do begin //Crearea unui array pentru patrate perfecte
q:=0;
repeat
s+=1;
if sqr(s)>n then break;
if q>0 then break;
a[i]:=sqr(s);
inc(b);
inc(q);
until sqr(s)<n;
if sqr(s)>n then break;
end;

for i:=0 to b-1 do if n=a[i] then //Program daca numarul este deja patrat perfect
begin
write(n,'=',a[i]);
exit;
end;

if (n mod 2 = 0) then begin //Program daca numarul este par
for i:=0 to b-1 do 
for l:=0 to b-1 do 
if n=a[i]+a[l] then begin
write(n,'=',a[i],'+',a[l]);
exit;
end;
end;

if (n mod 2 = 1) then begin //Program daca numarul este impar
for i:=0 to b-1 do 
for l:=0 to b-1 do 
for p:=0 to b-1 do if n=a[i]+a[l]+a[p] then begin
write(n,'=',a[i],'+',a[l],'+',a[p]);
exit;
end;
end;

end.
Alte întrebări interesante