如何将一个数字转换为它在base9中的等价数,并注意其base9没有“0”数字。
例如:
Base10 = 0,1,2,3,... 9,10,12 ... 28,29,30,... 62,63,64等
Base9 = N / A,1,2,3,... 9,11,12 ... 31,32,33,... 68,69,71等
我希望能够取正常的十进制数(例如10),并在base9中返回,忽略0位(例如:11)。
我是python和编程的新手,更不用说我在数学方面缺乏知识,所以我的第一次尝试相当草率。它只适用于较小的数字,我觉得有一种更简单的方法可以做到这一点。
def base9(x):
count = 0
a = xrange(10,100,9)
while count != x:
if x < a[count]:
return x + count
count += 1
print base9(10)
答案 0 :(得分:2)
将数字转换为普通基数9.然后将1加到最低位数字,以及除最高位数字之外的所有其他数字(这意味着当数字长度为1位数时,我们将1加1 )。
E.g。
答案 1 :(得分:0)
我认为Base10是0,1,2,3,4,5,6,7,8,9,而Base9是0,1,2,3,4,5,6,7,8。
数字“10”在基数10中是1 * 10 + 0 * 1,在基数9中是1 * 9 + 0 * 1.
答案 2 :(得分:0)
基数9可以为零,例如0为0. 10为1 * 9 + 0 * 1 = 9。
然而,它不能有一个9.每个数字告诉你有多少9个上升的力量加在一起。
你可能应该检查一下你是否得到负数。
对于每个输入,保持除以9并检查余数。
def base9(x):
sign = 1
if x < 0:
sign = -1
x *= -1
result = 0
index = 0
while x > 0:
result += (x%9) * 10**index
x /= 9
index += 1
return result*sign
答案 3 :(得分:0)
base9是由0,1,2,3,...,8组成的整数,不带9.例如,4位数字base9 int abcd = a * 9 ^ 3 + b * 9 ^ 2 + c * 9 ^ 1 + d * 9 ^ 0,a,b,c,d来自{0,1,2,3,4,5,6,7,8}。因此,11(base9)= 1 * 9 ^ 1 + 1 * 9 ^ 0 = 10(base10)。 这是我将正base10 int转换为base9的代码:
def base9(x):
digits = []
base9_int = 0
while x > 0:
digits.append(x % 9)
x = int(x / 9)
for x in digits[::-1]:
base9_int = base9_int * 10 + x
return base9_int
for each in range(1, 91):
print base9(each)