我有一个基数为10的数字,大约有10k位数.我想将它转换为base 2(1010101001 …).我能想到的只是原始算法:
取最后一个数字mod 2 – >写下来
数除以2;
在字符串上实现小学部门应该不难,但我认为它效率很低.如果我是对的,它将是O(l ^ 2),其中l表示基数为10的数字长度.可以更快地完成吗?
解决方法
据我所知,你的大数字表示为一个十进制数字序列.如果是这样,您可以使用乘法和加法计算“二进制”表示:
value = sum(i in 0…n-1) 10i * digiti
虽然我不确定你是否可以得到一个O(n log n)算法,但是这个计算可以用分而行的方式分成几部分.