首页 > 学院 > 开发设计 > 正文

洛谷 P1604 B进制星球

2019-11-08 01:07:07
字体:
来源:转载
供稿:网友

题目

星球上人们普遍采用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.
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表