您的位置:首页 > 其它

pku2769 枚举,hash

2010-06-17 20:30 260 查看
好久没更新了,因为在湖南,长沙一中,每天测试,讲题(主要是kib砖头sui和dmk)

我水了好几天。。。

题目大意:

一些数,让你求一个数,让这些数模这个数的余数不同

简略题解:

纯枚举,从1开始,理论复杂度是ans×n×time,但是能过且很快。。

竟然用windows的记事本编程,主要是用notepad++习惯了记事本的功能

附代码:

program pku_2769;
var hash:array[0..1000000] of longint;
a:array[0..1000] of longint;
i,n,testcase:longint;
{---------------}
function check(x:longint):longint;
var i,j,flag:longint;
begin
flag:=1;
for i:=1 to n do begin
if hash[a[i] mod x]<>0 then begin
for j:=1 to i do hash[a[j] mod x]:=0;
flag:=0;
break;
end;
hash[a[i] mod x]:=1;
end;
if flag=0 then exit(0);
for j:=1 to n do hash[a[j] mod x]:=0;
exit(1);
end;
{---------------}
procedure main;
var i,ans:longint;
begin
readln(n);
for i:=1 to n do readln(a[i]);
ans:=1;
while true do begin
if check(ans)=1 then begin
writeln(ans);
break;
end;
inc(ans);
end;
end;
{---------------}
begin
readln(testcase);
for i:=1 to testcase do
main;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: