并不需要社么优化
但是要做好初始化
即读入后立刻把珠子的数字转化成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.
一次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