一个很长的16进制数转化为10进制,有什么好的办法没有?

绿色夹克衫 2009-03-02 02:11:56
做一道ACM题的时候,需要用到大数运算,c#这方面差一些。只好自己用数组简单模拟了一个,
为了保证中间的运算速度,数组之间采用2^32进制,不过在输出结果的时候问题来了,
需要将一个很长的16进制数转化为10进制(可能有上千位吧!),如果挨个除以100000000,然后再取模的话,
效率就太低了,问问大家有没有什么好的方法?

如果实在不成,只好将数组本身变成100000000进制的,那样的话中间运算效率又会下降好多......
...全文
201 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2009-03-03
  • 打赏
  • 举报
回复
如果不在意空间,可以用5楼的方法来提高速度,不过空间复杂度是N²级的。
绿色夹克衫 2009-03-02
  • 打赏
  • 举报
回复
恩,也算是一招,再看看还有什么更好的办法没有!

[Quote=引用 5 楼 ckc 的回复:]
建立一个2的N次方的十进制数数组
这样转换的时候就相当于做N次加法了,也许速度可以快些?
[/Quote]
绿色夹克衫 2009-03-02
  • 打赏
  • 举报
回复
估计那些大数运算库,应该不是用这种方式实现的吧?

感觉他们的方法应该比我这个土办法要快不少!

[Quote=引用 4 楼 cnzdgs 的回复:]
如果你要实现就是数的完整转换的话,没有更好的办法。
[/Quote]
jlj84237485 2009-03-02
  • 打赏
  • 举报
回复
帮顶一下
绿色夹克衫 2009-03-02
  • 打赏
  • 举报
回复
虽然ACM的题已经通过了吧,不过这个问题仍然存在,

用的是效率比较低的连续/100000000 然后取余数输出。
ckc 2009-03-02
  • 打赏
  • 举报
回复
建立一个2的N次方的十进制数数组
这样转换的时候就相当于做N次加法了,也许速度可以快些?
cnzdgs 2009-03-02
  • 打赏
  • 举报
回复
如果你要实现就是数的完整转换的话,没有更好的办法。
sagegz 2009-03-02
  • 打赏
  • 举报
回复
友情UP~!

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧