比赛 |
NOIP2008集训模拟3 |
评测结果 |
AAAAAAAAAA |
题目名称 |
IP网络管理员 |
最终得分 |
100 |
用户昵称 |
辨机ZN |
运行时间 |
0.000 s |
代码语言 |
Pascal |
内存使用 |
0.00 MiB |
提交时间 |
2008-11-12 11:18:05 |
显示代码纯文本
program ex(f1,f2);
type
zn=array [1..1009] of string;
ka=array [0..9] of integer;
la=array [0..4] of string;
var
a:zn; f1,f2:text; s,s2,ym,ip,now:string;
i,j,k,l,p,m,n,ansn:longint; two:ka;
ans1,ans2:la; nows:string;
function zhuanhuan(s:string):string;
var
i,j,k,x,code:integer; s2,s3,s4:string;
begin
val(s,x,code);
s2:='';
while x<>0 do
begin
s2:=s2+char((x mod 2)+48);
x:=x div 2;
end;
l:=length(s2);
s3:='';
for i:=1 to l do s3:=s3+'0';
for i:=1 to l do s3[l-i+1]:=s2[i];
if l<8 then begin
s4:='';
for i:=1 to 8-l do s4:=s4+'0';
s3:=s4+s3;
end;
exit(s3);
end;
function shijinzhi(s:string):string;
var
i,j,k,x:integer; s2:string;
begin
x:=0;
for i:=8 downto 1 do
if s[i]='1' then
begin
x:=x+two[8-i];
end;
str(x,s2);
exit(s2);
end;
begin
assign(f1,'networkip.in'); reset(f1);
assign(f2,'networkip.out'); rewrite(f2);
readln(f1,n);
two[1]:=2; two[0]:=1;
for i:=2 to 8 do two[i]:=two[i-1]*2;
for i:=1 to n do
begin
readln(f1,s);
for k:=1 to 3 do
begin
s2:=copy(s,1,pos('.',s)-1);
s2:=zhuanhuan(s2);
a[i]:=a[i]+s2;
delete(s,1,pos('.',s));
end;
s2:=zhuanhuan(s);
a[i]:=a[i]+s2;
end;
now:=a[1];
for i:=2 to n do
begin
for j:=1 to 32 do
if now[j]<>a[i][j] then break;
now:=copy(now,1,j-1);
end;
ansn:=32-length(now);
for i:=1 to (32-ansn) do ym:=ym+'1';
for i:=1 to ansn do ym:=ym+'0';
ip:=now;
while length(ip)<32 do ip:=ip+'0';
for i:=1 to 4 do
begin
nows:=copy(ip,1,8);
delete(ip,1,8);
ans1[i]:=shijinzhi(nows);
end;
for i:=1 to 4 do
begin
nows:=copy(ym,1,8);
delete(ym,1,8);
ans2[i]:=shijinzhi(nows);
end;
for i:=1 to 3 do write(f2,ans1[i],'.'); writeln(f2,ans1[4]);
for i:=1 to 3 do write(f2,ans2[i],'.'); writeln(f2,ans2[4]);
close(f2);
close(f1);
end.