题意:给出N个数(N<=10000),求是否可以找到连续的若干个数,使得他们的和为N的倍数.
分析:首先根据抽屉原理,这个方案一定存在.
边读边做,记录1~i的和模N的余数,如果这个数出现过,那么就可以输出方案了.
code(0MS):
var a,sum,bool:array[0..10001] of longint;
n,i:longint;
procedure print(l,r:longint);
var o:longint;
begin
writeln(r-l+1);
for o:=l to r do writeln(a[o]);
halt;
end;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i]);
sum[i]:=(sum[i-1]+a[i]) mod n;
if sum[i]=0 then print(1,i)
else if bool[sum[i]]<>0 then print(bool[sum[i]]+1,i)
else bool[sum[i]]:=i;
end;
end.
浙公网安备 33010602011771号