Nếu có sai thì bạn nói nhé.
=========================
program Hello;
uses crt;
var a:array[1..1000] of Longint; {khai báo mảng}
n,j,s,i,tong:Longint; {khai báo kiều dữ liệu}
begin
clrscr; {xóa màn hình cho dễ nhìn}
write('n = ');
readln(n); {nhập n}
write('a = ');
for i:=1 to n do {nhập phần tử của mảng}
begin
read(a[i]); {nhập phần tử thứ a[i]}
s:=s+a[i]; {tính tổng tất cả các số}
end;
for j:= n downto 1 do {tìm số đoạn nhiều nhất nên đi ngược xuống}
if s mod j = 0 then {không có cũng được}
begin
tong:=0; {gán tổng bằng 0 khi bắt đầu tính}
for i:=1 to n do
begin
tong:=tong+a[i]; {tính tổng các đoạn nhỏ}
if tong= s div j then tong:=0; {tổng các đoạn nhỏ bằng với tổng tất cả chia cho số đoạn thì dừng vòng lặp ngoài bằng cách gán tổng bằng 0}
end;
if tong=0 then Break; {vòng lặp ngoài dừng khi tổng bằng 0}
end;
write('-> ',j); {in số đoạn nhiều nhất là j, vì còng lặp ngoài có biến đếm là j}
end.
=================================
Ý tưởng:
xét trường hợp: 1 2 3 1 2 3
ta thấy tổng chúng là 12.
Số đoạn nhiều nhất (nhẫm) là 4 (1 2 | 3 | 1 2 | 3)
Tổng các đoạn là 3. Và 12 chia cho 4 đoạn thì bằng 3.
Nên ta có số đoạn bằng: Tổng tất cả các số, chia cho tổng các số đoạn nhỏ.