Răspuns :
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.
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.
Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile și inspiraționale. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, suntem aici pentru a vă ajuta. Ne face plăcere să vă revedem și vă invităm să adăugați site-ul nostru la favorite pentru acces rapid!