与for i:=1 to n do f[1,i]:=(sum[i+w-1]-sum[w-1]+10000) mod 10;
在此贴上我的AC代码
//don't understand
var n,m,i,j,w,k,ans:longint;
sum:array[0..10000]of int64;
f:array[0..1000,0..1000]of longint;
function min(a,b:longint):longint;
begin
if a>b then exit(b);
exit(a);
end;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
begin
readln(n,m);
for i:=1 to n do begin readln(sum[i]); sum[i+n]:=sum[i]; end;
for i:=1 to 2*n do sum[i]:=sum[i]+sum[i-1];
ans:=maxlongint;
for w:=1 to n do
begin
for i:=0 to m do
for j:=0 to n do f[i,j]:=100000;
for i:=1 to n do f[1,i]:=(sum[i+w-1]-sum[w-1]+100000)mod 10;
for i:=2 to m do
for j:=i to n do
for k:=j-1 downto i-1 do
f[i,j]:=min(f[i,j],f[i-1,k]*((sum[j+w-1]-sum[k+w-1]+100000)mod 10));
ans:=min(ans,f[m,n]);
end;
writeln(ans);
ans:=0;
for w:=1 to n do
begin
fillchar(f,sizeof(f),0);
for i:=1 to n do f[1,i]:=(sum[i+w-1]-sum[w-1]+100000)mod 10;
for i:=2 to m do
for j:=i to n do
for k:=j-1 downto i-1 do
f[i,j]:=max(f[i,j],f[i-1,k]*((sum[j+w-1]-sum[k+w-1]+100000)mod 10));
ans:=max(ans,f[m,n]);
end;
writeln(ans);
end.