题目描述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]);