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
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.
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
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă