将非常大的int(写成字符串)转换为c / c中的二进制字符串

前端之家收集整理的这篇文章主要介绍了将非常大的int(写成字符串)转换为c / c中的二进制字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个基数为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)算法,但是这个计算可以用分而行的方式分成几部分.

猜你在找的C&C++相关文章