题解 P1154 【奶牛分厩】
题目的意思就是求一个整数K,使得K对于所有奶牛编号的余数两两不同。
明确一点:已知两个整数a和b,如果a<b,那么K mod a=K mod (a-b),这里的mod是取余的运算。所以可以对于a-b打一个表,如果一个整数x满足Si-Sj=x,则答案一定不会是x。因为不会有两头奶牛睡在同一个房间内。
var
a,f:array[0..1000000]of longint;
i,j,n:longint;
begin
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
f[abs(a[i]-a[j])]:=1;
for i:=n to maxlongint do
if f[i]=0 then begin write(i);halt; end;
end.
程序实现的时候要注意细节问题。