题解 P1154 【奶牛分厩】
这道题无非是倒推hash公式 Si mod k,让K成立,
不过既然是倒推,就不能用正推的方法
注意!!!枚举K不是最好的方法!!!!!
倒推要比正推好!
从另一个角度想,余数都不一样,就是证明没有一样的,
所以,
中国剩余定理满足这个要求!!!
(如果中国剩余定理(同余定理)不懂的童鞋要查一查了,这里不做多解释)
然后k不在辗转相减(同余定理的公式)的范围内,见缝插针!输出答案K。
但是数据很垃圾(说实话),上面这种方法差一点点,全对(数据严格的话)
可以清理K的倍数达到效果。
算法不深奥,附上骗分100算法
var
n,m,i,j,k:longint;
a,b:array[1..10000] of longint;
c:array[0..1000000] of longint;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
for j:=i+1 to n do
begin
b[i]:=abs(a[i]-a[j]);//同余公式
inc(c[b[i]]);
end;
for k:=n to 1000000 do//非暴力不合作
if c[k]=0 then
begin
writeln(k);//骗分妙招:见缝插针
halt;
end;
end.