shadow's Blog

Happy coding

数的表示

将一个整数转换为3的指数加减的形式,如7转换为30-31+32

# -*- coding: utf-8 -*-
def inttoint3(num):
    ret=[]
    tmp=num
    while tmp!=0:
        ret.append(tmp%3)
        tmp/=3
    ret.append(tmp)
    return ret

def int3tostring3(num):
    pnum=0#负数标志
    if num<0:
        num=-num
        pnum=1
    lst=inttoint3(num)#十进制转换为三进制
    ll=len(lst)
    res=[0]*ll
    flag=0#进位标志
    for i in range(ll):
        lst[i]+=flag
        if lst[i]==1 or lst[i]==0:
            res[i]=lst[i]
            flag=0
        elif lst[i]==2:
            res[i]=-1
            flag=1
        elif lst[i]==3:
            res[i]==0
            flag=1
    if i>0 and res[i]==0:
        res.pop()
        ll-=1
#print res,ll
    if pnum==1:
        for j in range(ll):
            res[j]=0-res[j]
    return res
if __name__=="__main__":
    num=[-3,-7,0,1,2,3,4,7,11,28]
    for i in num:
        print int3tostring3(i)