| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1433 人关注过本帖
标题:求超大数的存储方法
只看楼主 加入收藏
chllcy
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-7
收藏
 问题点数:0 回复次数:6 
求超大数的存储方法
      比如有个数超大,double存不下,请问怎么实现?大部分人都说数组,但具体不了了之,希望大家帮帮忙,比如实现2的100次方的结果
搜索更多相关主题的帖子: double 
2006-10-17 18:30
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

这个是2的10000次方
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;

int main(int argc, char *argv[])
{
double log2 = 0.30102999566398119;
int n, digits;
cin>>n;
digits = (int)(n*log2+1)/4+2;
int *num = new int[digits];
memset(num, 0, sizeof(int) * digits);

int p, q, r=1;
p = n%16;
q = n>>4;

num[0] = 1;
num[0] <<= p;
num[1] = num[0]/10000;
num[0] %= 10000;

for(int i=0, g; i<q; ++i)
{
g=0;
for(int j=0; j<r; ++j)
{
num[j] <<= 16;
num[j] += g;
g = num[j]/10000;
num[j] %= 10000;
}
while(g)
{
num[r++]=g%10000;
g/=10000;
}
}

for( ; !num[r]; --r) ;
printf("%d", num[r--]);
if(r>0)
for(r; r>=0; --r)
printf("%04d", num[r]);

delete []num;
system("PAUSE");
return 0;
}
不知道谁写的


2006-10-17 20:34
chllcy
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2006-10-7
收藏
得分:0 

谢谢啊!

2006-10-17 23:22
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 
用字符串模拟
精度高

http://www. 第二站>>>提供源码下载
2006-10-18 08:03
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
收藏
得分:0 
链表,一个结点存4个

Viva,espana!
2006-10-20 10:37
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
收藏
得分:0 
double 不行不还有long double嘛.

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-10-21 18:46
gothree
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-10-21
收藏
得分:0 
应该可以利用数组来存储吧
2006-10-22 18:14
快速回复:求超大数的存储方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035596 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved