您的位置:首页 > 其它

POJ 1002(字符串处理)

2012-08-07 17:13 344 查看
这题就是字符串处理

Program P1002;
Type
phone=record
num,s:longint;
end;
var
n,i,j,p:Longint;
b:boolean;
s:ansistring;
a:array[0..9999999] of longint;
// f:array[1..100000] of phone;
ch:array['A'..'Z'] of longint=(2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,-1,7,7,8,8,8,9,9,9,-1);
function isdight(c:char):longint;
var
i,j,p:longint;
begin
p:=ord(c);
if (48<=p) and (p<58) then exit(p-48);
if (65<=p) and (p<=90) then
begin
if ch[c]<>-1 then exit(ch[c]);
end;
exit(-1);

end;
function hash:longint;
var
i,j,p:longint;
begin
j:=0;
hash:=0;
for i:=1 to length(s) do
begin
if s[i]='-' then continue;
p:=isdight(s[i]);
if (p=-1) or ((p<>-1) and (j=7)) then exit(-1);
hash:=hash*10+p;
inc(j);
end;
if j<>7 then exit(-1);
end;
procedure pri(p:longint);
var
i,j:longint;
begin
b:=true;
i:=p div 10000;
j:=p mod 10000;
if i<100 then write('0');
if i<10 then write('0');
write(i,'-');
if j<1000 then write('0');
if j<100 then write('0');
if j<10 then write('0');
writeln(j,' ',a[p]);
end;
Begin
b:=false;
readln(n);
fillchar(a,sizeof(a),0);
for i:=1 to n do
begin
readln(s);
p:=hash;
if p=-1 then continue
else inc(a[p]);
end;
for i:=0 to 9999999 do
if a[i]>1 then pri(i);
if not(b) then writeln('No duplicates.');

End.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: