您的位置:首页 > 其它

洛谷1604 B进制星球

2017-01-13 16:40 309 查看
B进制星球
题目描述

话说有一天,小Z乘坐宇宙飞船,飞到一个美丽的星球。因为历史的原因,科技在这个美丽的星球上并不很发达,星球上人们普遍采用B(2<=B<=36)进制计数。星球上的人们用美味的食物招待了小Z,作为回报,小Z希望送一个能够完成B进制加法的计算器给他们。
现在小Z希望你可以帮助他,编写实现B进制加法的程序。


分析
   普通的高精度加法加一些模拟,不难,进位时注意是B进制不是10进制。

代码
  const

  maxn=2000;

var

  c,a,b:array[0..maxn] of longint;

  n:longint;

procedure init;

var

  s1,s2:ansistring;

  i,j,l1,l2:longint;

begin

  readln(n);

  readln(s1);

  readln(s2);

  l1:=length(s1);l2:=length(s2);

  for i:=l1 downto 1 do

    if s1[i] in ['0'..'9']

      then a[maxn-l1+i]:=ord(s1[i])-48

      else a[maxn-l1+i]:=ord(s1[i])-55;

  for i:=l2 downto 1 do

    if s2[i] in ['0'..'9']

      then b[maxn-l2+i]:=ord(s2[i])-48

      else b[maxn-l2+i]:=ord(s2[i])-55;

end;

procedure add;

var

  i,g,s:longint;

begin

  g:=0;

  for i:=maxn downto 1 do

    begin

      s:=a[i]+b[i]+g;

      c[i]:=s mod n;

      g:=s div n;

    end;

end;

procedure print;

var

  i,j:longint;

begin

  j:=1;

  while (c[j]=0) and (j<maxn) do inc(j);

  for i:=j to maxn do

    if c[i]>9

      then write(chr(c[i]+55))

      else write(c[i]);

end;

begin

  init;

  add;

  print;

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