题目
星球上人们普遍采用B(2<=B<=36)进制计数。小Z希望送一个能够完成B进制加法的计算器给他们。 现在小Z希望你可以帮助他,编写实现B进制加法的程序。
题解
高精度加法,计算开始把字母转换为数字,结束把数字转为字母
代码
var
e,i,j:longint;
a,b,c:array[1..2000]of longint;
s1,s2:ansistring;
procedure add;
var
i,j,x:longint;
begin
x:=0;
for i:=1 to 2000 do
begin
c[i]:=a[i]+b[i]+x;
x:=c[i] div e;
c[i]:=c[i]-x*e;
end;
end;
begin
readln(e);
readln(s1);
readln(s2);
for i:=1 to length(s1) do
if (s1[i]>='0')and(s1[i]<='9') then
a[length(s1)-i+1]:=ord(s1[i])-ord('0') else
a[length(s1)-i+1]:=ord(s1[i])-55;
for i:=1 to length(s2) do
if (s2[i]>='0')and(s2[i]<='9') then
b[length(s2)-i+1]:=ord(s2[i])-ord('0') else
b[length(s2)-i+1]:=ord(s2[i])-55;
add;
i:=2000;
while (c[i]=0)and(i>1) do dec(i);
for j:=i downto 1 do
if c[j]<10 then write(c[j]) else write(chr(c[j]+55));
end.