pascal二进制_R进制

题目描述binary.pas
Kendy是一个疯狂的程序员,当他在表示数字的时候,会根据心情使用不同的进制来表示数字,比如他高兴的时候会使用2进制,伤心的时候会使用4进制。随着时间的流逝,Kendy也觉得这种随心所欲的表示方法太过疯狂,常常使自己都反应不过来,于是Kendy决心将所有的数字都转成统一的二进制来表示。但是由于需要转换的数字太多了,因此,Kendy想请你帮忙帮他把所有的数字都转成二进制的形式。
输入
共2行,第一行一个整数R(≤10);第2行一个R进制数(其值小于231)。
输出
 
仅1行,表示转换后的二进制数。样例输入7
203
样例输出1100101

任意进制转十进制会吗,参考算法(按权值展开计算):
变量说明:
i:循环变量
m:转化后的十进制
s:R进制(字符串类型)
a:权值
a:=1;
for i:=length(s) downto 1 do
 begin
  if s[i] in ['0'..'9'] then m:=m+(ord(s[i])-48)*a
                          else m:=m+(ord(s[i])-55)*a
  a:=a*r;
 end;
然后再把十进制转化成二进制(除二取余倒序法):
变量说明:
i:指针
a:存放二进制的数组
i:=0;
while m<>0 do
 begin
  inc(i);
  a[i]:=m mod 2;
  m:=m div 2;
 end;
注意事项:
1、如果输入的数为0,要在加一个if语句
2、输出时要倒序输出,因为方法是“除二倒序取余法”,如:
      for j:=i downto 1 do write(a[i]);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值