您的位置:首页 > 其它

算法学习笔记12-任意进制数的转换

2017-08-20 10:28 459 查看

进制转换

将o进制的数m转换为n进制的数输出。可以识别负数。

因为这里是用字符串读取,所以对数的范围没有限制,可以是很大的数。

#coding=utf-8
import sys
def zero(a):
for i in a:
if i==0:
continue
else:
return False
return True
def o2n(a,old,new):
r=[]#存储商
b=[]#存储新进制数
while not zero(a):
t=0
for i in a:
t=t*old+i
r.append(t//new)#除新进制数new得到商
t%=new#取余数
b.append(t)#存储余数
a=[i for i in r]#把商传给a数组
r=[]#清空r数组
b.reverse()
return b
def out(a):
d=['A','B','C','D','E','F']
for i in a:
if i<10:
print i,
sys.stdout.softspace=0
else:
print d[i-10],
sys.stdout.softspace=0
print
m,n,o=raw_input().split()
n=int(n)#new
o=int(o)#old
flag=False
if m[0]=='-':
flag=True
del m[0]
print '-',
sys.stdout.softspace=0
m=[int(i,o) for i in m]
out(o2n(m,o,n))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法