找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 4327|回复: 1

【java】大数据超内存计算--10000的阶层的计算

[复制链接]
发表于 2014-4-24 11:32:45 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
ps:今天时间不多,简单介绍下思路,具体实现代码我过两天贴上来。题目:计算10000的阶层。(很多考研或者面试题目会出到这个知识点,比如2014年吉林大学复试第3题)
知识归类:应该属于c语言数组一章的内容。

第一种实现方法,底层编程解决,想了解的可以看论坛里面的帖子,群主之前发过一篇,在此我不多讲解了。
第二种,最简单的方法,任何语言都可以实现。如果计算10000的阶层,不用多说,2000的阶层就达到5700多位,你选择的任何数据类型都存储不了,都在数据类型的容量之外,导致越界。那么现在的问题是选择一个合适的存储结构来将数据存起来。一个有n位的数字想存储的话,利用已知java的数据类型,自然而然想到数组。假设算出来的位数有5000位左右,设置5000长度数组,数组每一位存储数字的一位,依次从0开始,每乘以一个数,将数组每一位与被乘数相乘,设置一个变量专门计算进位,然后将进位与对应位相加。照这个思路推算,你要计算10000的阶层不过是一个预估结果有多少位,然后声明多少位数组即可。即使数组达不到要求,多声明几个数组也行。

大体思路很简单,有兴趣的同学可以自己实现以下。第一篇帖子就写到这里,有点水,大家别笑就好。
后续贴可能会讲到:自然语言处理的各种算法(带实现)、大数据处理各种问题(带解决)、云平台搭建与集群处理、少量黑客技术....哎。。思路好杂。以后再说吧。。。
回复

使用道具 举报

发表于 2014-4-25 16:45:34 | 显示全部楼层
额,用java实现的话直接用java.math.BigInteger就可以了,如果想自己实现的话最好还是参考一下那个src里的BigInteger的源码,大数的运算有很多不同实现和优化,各自的效率和计算精度不同,效率也不同,可以从google上找找,他们的实现都是有优化的拿来参考一下对自己提高很有好处。
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-22 02:55 , Processed in 0.030665 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表