洛谷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.
题目描述
话说有一天,小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.
相关文章推荐
- 【洛谷 1604】 B进制星球
- 洛谷 1604——B进制星球(高精度算法)
- 洛谷 P1604 B进制星球
- 洛谷 P1604 B进制星球
- 洛谷 P1604 B进制星球
- 高精度数学-洛谷P1066 2^k进制数
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
- B进制星球
- 【洛谷 1013】 进制位
- 洛谷 P1013 进制位 【搜索 + 进制运算】
- 洛谷 P1013 进制位 【搜索 + 进制运算】
- 高精度——B进制星球
- B进制星球
- 洛谷 P1066 2^k进制数
- 洛谷 P1066 [NOIP2006 T4] 2^k进制数
- BZOJ1604 & 洛谷2906:[USACO2008 OPEN]Cow Neighborhoods 奶牛的邻居——题解
- [NOIP2000真题][洛谷1017]进制转换
- 洛谷 P1013 [NOIP1998 T3] 进制位
- 数学方法模拟(洛谷1017 进制转换NOIp2000提高组第一题)
- PHP之进制转换