我一直在处理由我们的教练给我们的练习,即返回相当于输入数字的“ base 9 ”。
输入数字为: 231085 和 退货号码为: 382871 。
我不知道他是怎么想出那个所谓的“基础9”等同物 我试着寻找关于如何在网络上获得基础9等价的公式,但是我很难理解,加上我在数学和代数方面很弱的事实。
我尝试使用模数和除法来解决它并且没有得到任何东西(当然,我的公式错了)。
我真的对这个问题傻眼了,如果有人能帮我解决这个问题,我会很感激。
或许答案或问题本身都错了?
干杯!
答案 0 :(得分:8)
base-9编号系统是一个使用九位数来表示数字的系统。也就是说,
231,085 = 2×10 5
+ 3×10 4
+ 1×10 3
+ 0×10 2
+ 8×10 1
+ 5×10 0
在base-10系统中,a.k.a。十进制编号系统。但是在base-9系统中,你写的是9的整数倍的项,而不是10的幂,如上所示:
381,881 = 3×9 5
+ 8×9 4
+ 1×9 3 (您的导师给了您错误的号码,顺便说一下。它是381,881而不是382,871)
+ 8×9 2
+ 8×9 1
+ 1×9 0
注意,基数-10表示中的10的幂的系数(即,2,3,1,0,8和5)总是十个十进制数字之一(从零到九)。同样,基数9表示(3,8,1,8,8,1)中9的幂的系数总是九个十进制数字之一(从零到八)。更多的东西,你必须把它带过来,就像你在小学里添加多位数字一样。
现在,对于将base-10表示转换为base-9的算法,首先看看Converting a decimal number into binary,它从base-10转换为base-2。唯一的区别在于你除以9的幂,而不是这个问题的2的幂。
按照链接问题中的示例,
[231085] [53938] [1450] [721] [73] [1]
÷59049 ÷6561 ÷729 ÷81 ÷9 ÷1
[3] [8] [1] [8] [8] [1]
如果你想系统地将基数为10的整数分解为数字,你可以遵循以下模式:
因此,对于231,085,迭代如下:
Step: 1 2 3 4 5 6
-------------------------------------------------------------
Number: 231,085 23,108 2,310 231 23 2
÷10 ÷10 ÷10 ÷10 ÷10 ÷10
-------------------------------------------------------------
Quotient: 23,108 2,310 231 23 2 0 <-- Quotient reached 0, so stop
Remainder: 5 8 0 1 3 2
如您所见,每一步中的剩余部分是数字231,085中的下一个最低有效数字。这意味着5是最不重要的数字。然后是8,实际上是8×10 = 80,并且10> 1;然后0×100,并且100> 10,等等。
现在如果你在每一步中除以9而不是如上所述的10,则表格看起来像
Step: 1 2 3 4 5 6
-------------------------------------------------------------
Number: 231,085 25,676 2,852 316 35 3
÷9 ÷9 ÷9 ÷9 ÷9 ÷9
-------------------------------------------------------------
Quotient: 25,676 2,852 316 35 3 0
Remainder: 1 8 8 1 8 3
现在剩余部分与基数为10的231,085的基数9表示的顺序相反。
这个答案实际上并没有为你提供基本转换的代码,但是上面概述了基本逻辑,并且算法存在于整个互联网上(可能是针对不同的基础,但你需要改变的只是基础分裂)。
答案 1 :(得分:1)