讨论 / 这题真水
Jollwish 2010-11-09 21:42:00
点我顶贴 收藏 删除
直接的枚举即可

并不需要社么优化

但是要做好初始化

即读入后立刻把珠子的数字转化成7进制

不能在枚举的过程中转化

程序:

var r:array[1..900]of integer;

a:array[1..900,0..10] of integer;

i,j,k,min,n,l,ms:integer;

procedure c(i:integer); //转化成7进制

var k,m,l:integer;

begin

m:=r[i];

l:=0;

while m>0 do

begin

inc(l);

a[i,l]:=m mod 7;

m:=m div 7;

end;

a[i,0]:=l;

end;

function c2(i,j:integer):integer;//比较两颗珠子,并将结果转化为2进制

var s:array[1..10] of integer;

k,t:integer;

begin

fillchar(s,sizeof(s),0);

for k:=1 to l do

if a[i,k]<>a[j,k] then s[k]:=1;

t:=1;

c2:=0;

for k:=1 to l do

begin

c2:=c2+t*s[k];

t:=t*2;

end;

end;

begin

readln(n);

fillchar(a,sizeof(a),0);

for i:=1 to n do

begin

read(r[i]);

c(i);

end;

l:=0;

for i:=1 to n do

if a[i,0]>l then l:=a[i,0];

min:=maxint;

for i:=1 to n-1 do

for j:=i+1 to n do

if abs(c2(i,j)-123)<min then

begin

ms:=c2(i,j);

min:=abs(c2(i,j)-123);

end;

writeln(ms);

end.

#1 webeskycn@2009-08-07 07:22:00
回复 删除
我也觉得很水。。。

一次AC...

状态: Accepted

测评机: Xeost[5]

得分: 100分

提交日期: 2009-8-7 22:19:00

有效耗时: 3297毫秒

测试结果1: 通过本测试点|有效耗时219ms

测试结果2: 通过本测试点|有效耗时219ms

测试结果3: 通过本测试点|有效耗时281ms

测试结果4: 通过本测试点|有效耗时313ms

测试结果5: 通过本测试点|有效耗时422ms

测试结果6: 通过本测试点|有效耗时391ms

测试结果7: 通过本测试点|有效耗时390ms

测试结果8: 通过本测试点|有效耗时266ms

测试结果9: 通过本测试点|有效耗时390ms

测试结果10: 通过本测试点|有效耗时406ms

#2 Fish、のTorres@2009-08-07 07:26:00
回复 删除
Orz,,,

不超时么

我来嘻唰唰了

#3 407137009@2010-11-09 21:42:00
回复 删除
不初始化也没关系额,程序写的漂亮点就行了
查看更多回复
提交回复