您的位置:首页 > 其它

【模拟高精度+进制转换】数学序列

2011-10-22 14:50 211 查看


=============================

模拟高精加。

===================================

var
d:array[char]of longint;
dc:array[0..36]of char;
a,b,c:array[1..201]of longint;
a_l,b_l:longint;
n:longint;
procedure init;
begin
assign(input,'madition.in');
assign(output,'madition.out');
reset(input); rewrite(output);
end;

procedure terminate;
begin
close(input); close(output);
halt;
end;

procedure pre;
var
ch:char;
i:longint;
begin
i:=10;
for ch:='a' to 'z' do begin dc[i]:=ch; d[ch]:=i; inc(i); end;
i:=0;
for ch:='0' to '9' do begin dc[i]:=ch; d[ch]:=i; inc(i); end;
end;

procedure main;
var
i:longint;
st:string;
begin
readln(n);
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);

readln(st);
a_l:=length(st);
for i:=1 to a_l do
begin
a[i]:=d[st[a_l+1-i]];
end;

readln(st);
b_l:=length(st);
for i:=1 to b_l do
begin
b[i]:=d[st[b_l+1-i]];
end;

if a_l<b_l then a_l:=b_l;
for i:=1 to a_l do
begin
c[i]:=a[i]+b[i]+c[i];
c[i+1]:=c[i] div n;
c[i]:=c[i] mod n;
end;

if c[a_l]>n then
begin
c[a_l+1]:=c[a_l] div n;
c[a_l]:=c[a_l] mod n;
inc(a_l);
end;
if c[a_l+1]<>0 then inc(a_l);
for i:=a_l downto 1 do
write(dc[c[i]]);
end;

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