免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: DNFCF
打印 上一主题 下一主题

[算法] 变态的算法题 [复制链接]

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
21 [报告]
发表于 2011-04-29 08:59 |只看该作者
可是在C语言下,好像超过10位就会溢出啊,怎么解决啊??
DNFCF 发表于 2011-04-28 22:57



    大数运算啊

论坛徽章:
0
22 [报告]
发表于 2011-04-29 09:38 |只看该作者
回复 20# KBTiller


    恩,看了很受教,弱弱的问下,大数拆小数有没有神马规律啊??

论坛徽章:
0
23 [报告]
发表于 2011-04-29 09:40 |只看该作者
回复 20# KBTiller


      恩,看了很受教,弱弱的问下,大数拆小数有没有神马规律啊??

论坛徽章:
0
24 [报告]
发表于 2011-04-29 11:36 |只看该作者
回复  KBTiller


      恩,看了很受教,弱弱的问下,大数拆小数有没有神马规律啊??
DNFCF 发表于 2011-04-29 09:40


没什么规律
构造一个数据结构要结合具体的算法
最主要的原则我认为是能方便地读写

你这个题目
我认为可以用一个数组来模拟一个“大数”(当然这不是最精致的方案)
例如
int dashu[22];
用dashu[0]存个位数
用dashu[1]存十位数
用dashu[2]存百位数
……
建议你先试一下计算9^21再输出(前面有答案便于测试)

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
25 [报告]
发表于 2011-04-29 12:27 |只看该作者
回复 24# KBTiller


    这种大数表示方法有些低效{:3_189:}

论坛徽章:
0
26 [报告]
发表于 2011-04-29 12:45 |只看该作者
回复 25# koolcoy


    是的。主要考虑到楼主的经验不多。
    您的方案是?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
27 [报告]
发表于 2011-04-29 13:16 |只看该作者
回复 26# KBTiller

    两个64位整数并做一个128位整数使用,或者使用汇编调使用bcd指令

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
28 [报告]
发表于 2011-04-29 13:47 |只看该作者
大数运算的基本原理就是进制,假设某个系统的数据宽度为两位的2进制,那么这个系统对于任何大于3的数来说,都无法直接运算。要想做超过3的运算,可以用2个2位也就是4位来表示数据,就能处理最大值为15的数了。所以要做大数运算,只需要再虚拟出一层x进制就行了。

论坛徽章:
0
29 [报告]
发表于 2011-04-30 09:34 |只看该作者
回复  KBTiller

    两个64位整数并做一个128位整数使用,或者使用汇编调使用bcd指令
koolcoy 发表于 2011-04-29 13:16



    呵呵,这个当然高效
    不过我估计楼主只有小米加步枪,不会有“64位整数”这种原子弹

论坛徽章:
0
30 [报告]
发表于 2011-04-30 13:40 |只看该作者
这个题目的算法其实不难
从根本上来说考察的是构造数据的能力
数据组织的好,往往并不需要什么精妙的算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP