Phân tích số N thành tổng các số liền nhau
Cho số nguyên dương N. Hãy cho biết có thể phân tích N thành tổng các số tự nhiên liên tiếp hay không? Nếu có hãy phân tích N thành tổng của các số tự nhiên liên tiếp với nhiều số hạng nhất có thể được.
VD: Nhâp n = 5
Xuất:
5 = 1 + 1 + 1 + 1 + 1
5 = 1 + 1 + 1 + 2
5 = 1 + 1 + 3
5 = 1 + 2 + 2
5 = 1 + 4
5 = 2 + 3
5 = 5
Trả lời
Tổng hợp câu trả lời (2)
huy369
07:04:11 21-Apr-2022
m,i,h,g,N,k,S:integer;
Begin
write('Nhap vao so nguyen duong N:'); Readln(N);
m:=1;
while m<= N div 2 do
Begin
For i:= (N +1) div 2 downto m+1 do
Begin
S:=0; h:=0;
For k:=m to i do
Begin
S:=S+k;
h:=h+1;
A[h]:=k;
End;
if S=N then
Begin
For g:=1 to h do
write(A[g]:3);writeln;Readln;exit;
End;
End;
m:=m+1;
End;
Readln
END.
Program dem_cach_phan_tich_so;
var
n,i,j:integer;
f:array[0..100,0..100] of longint;
begin
readln(n);
for i:=1 to n do begin f[0,i]:=0; f[i,0]:=1; end;
for i:=1 to n do
for j:=1 to n do
if (i>j) then f[i,j]:=f[i-1,j]
else f[i,j]:=f[i-1,j]+f[i,j-i];
writeln(f[n,n]);
readln;
end.
Hãy giúp mọi người biết câu trả lời này thế nào?
0
NguyenHieu
08:12:15 16-Dec-2021
m,i,h,g,N,k,S:integer;
Begin
write('Nhap vao so nguyen duong N:'); Readln(N);
m:=1;
while m<= N div 2 do
Begin
For i:= (N +1) div 2 downto m+1 do
Begin
S:=0; h:=0;
For k:=m to i do
Begin
S:=S+k;
h:=h+1;
A[h]:=k;
End;
if S=N then
Begin
For g:=1 to h do
write(A[g]:3);writeln;Readln;exit;
End;
End;
m:=m+1;
End;
Readln
END.
Program dem_cach_phan_tich_so;
var
n,i,j:integer;
f:array[0..100,0..100] of longint;
begin
readln(n);
for i:=1 to n do begin f[0,i]:=0; f[i,0]:=1; end;
for i:=1 to n do
for j:=1 to n do
if (i>j) then f[i,j]:=f[i-1,j]
else f[i,j]:=f[i-1,j]+f[i,j-i];
writeln(f[n,n]);
readln;
end.
Hãy giúp mọi người biết câu trả lời này thế nào?