社区
工具平台和程序库
帖子详情
用C++算长整数的运算
yuedong
2004-04-04 05:00:17
复杂度最小的程序如何设计呢?老觉得自己用做的不是最简单的,双链表如何??
...全文
121
10
打赏
收藏
用C++算长整数的运算
复杂度最小的程序如何设计呢?老觉得自己用做的不是最简单的,双链表如何??
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
txdyjsyz
2004-04-09
打赏
举报
回复
ostream & operator<<(ostream &os,INT &m){
int j=0;
// for(int i=N;i<0;i--){
for(int i=N-1;i>=0;i--){
if(!j&&!m.a[i]) continue;
if(j&&!m.a[i]) os<<"0000";
if(!j&&m.a[i]) {
os<<m.a[i];
j=1;
continue;
}
if(j&&m.a[i]){
if(m.a[i]>1000) os<<m.a[i];
// if(m.a[i]<1000) os<<'0'<<m.a[i];
// if(m.a[i]<100) os<<"00"<<m.a[i];
// if(m.a[i]<10) os<<"000"<<m.a[i];
else
if(m.a[i]>100) os<<'0'<<m.a[i];
else
if(m.a[i]>10) os<<"00"<<m.a[i];
else os<<"000"<<m.a[i];
}
}
return os;
}
void main(void){
INT i,j,k;
cout<<"请输入两个大整数。"<<endl;
cin>>i>>j;
cout<<"第一个大整数为:";
cout<<i<<endl;
cout<<"第二个大整数为:"<<j<<endl;
k=i+j;
// cout<<"第一个大整数为:";
// cout<<i<<endl;
// cout<<"第二个大整数为:"<<j<<endl;
cout<<"两个大整数之和为:"<<k<<endl;
}
/* 控制输出的一个方法
ostream & operator<<(ostream &os,INT &m){
int j=0;
char zero=' ';
for(int i=N-1;i>=0;i--){
if(!j&&!m.a[i]) os<<" ";
if(j&&!m.a[i]) os<<"0000";
if(m.a[i]){
if(m.a[i]>1000) os<<m.a[i];
else
if(m.a[i]>100) os<<zero<<m.a[i];
else
if(m.a[i]>10) os<<zero<<zero<<m.a[i];
else os<<zero<<zero<<zero<<m.a[i];
j=1;
zero='0';
}
}
return os;
}
*/
txdyjsyz
2004-04-09
打赏
举报
回复
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#define N 20
class INT{
unsigned short *a;
public:
INT(int n=N){
a=new unsigned short[N];
}
INT(INT &m){
a=new unsigned short[N];
for(int i=0;i<N;i++) a[i]=m.a[i];
}
~INT(){
// cout<<"dec : "<<a<<" "<<a[0]<<endl;
delete a;
}
// INT& operator+(INT m){
INT operator+(INT &m){
INT p;
short d=0;
for(int i=0;i<N;i++){
if(a[i]+m.a[i]+d>10000){
p.a[i]=a[i]+m.a[i]+d-10000;
d=1;
}
else{
p.a[i]=a[i]+m.a[i]+d;
d=0;
}
}
return p;
}
// INT& operator=(short *m){
INT& operator=(INT m){
// if(m==this->a) return *this;
// if(a==m.a) return *this;
// for(int i=0;i<N;i++) this->a[i]=m[i];
for(int i=0;i<N;i++) a[i]=m.a[i];
return *this;
}
friend istream & operator>>(istream &is,INT &m);
friend ostream & operator<<(ostream &os,INT &m);
};
istream & operator>>(istream &is,INT &m){
char c[4*N];
is>>c;
int len;
len=strlen(c);
int i=len-4;
if(i<0) i=0; // additive by teacher
// for(int i=len-4,j=0;j<N;j++){
for(int j=0;j<N;j++){
// if(c[i]==NULL){
if(c[i]!=NULL){
m.a[j]=atoi(&c[i]);
c[i]=NULL;
for(int k=1;k<=4;k++) if(&c[i]!=c) i--;
}
else // additive by teacher
m.a[j]=0;
}
return is;
}
zfangla
2004-04-08
打赏
举报
回复
正好最近老师让做这个题目。我用带头接点的单链表做,每个接点存一位。支持+ - * 对于/能输出除数和余数。原码比较多,就说说思想吧。
+ :同位接点的2个数相加,并记录进位,留给下一位加上。
- :同位接点的2个数相减,记录借位,在下一位减去借位。当然一开始要比较2个大数。
* :比如:A*3234,先A+A+A再在A后面加3个0,再A+A后面加2个0....
/ :方法就多了,用除法运算原则编程序很费劲但效率高,倒有很多奇特的方法。。。
唉,语言表达能力有限。如果不怕眼睛花,我就把原码贴出来。。。
dot99
2004-04-08
打赏
举报
回复
__int64
然后级联~~~
搞个2^64进制~~~
Wolf0403
2004-04-08
打赏
举报
回复
http://groups.google.com/groups?hl=zh-CN&lr=&ie=UTF-8&inlang=zh-CN&frame=right&th=c5ba02b522725a07&seekm=Orpcc.51235%24NU5.48232%40newssvr16.news.prodigy.com#link1
andy_show
2004-04-06
打赏
举报
回复
加密解密的长整数运算吧,好像GNU的数学处理库里有这些函数,我以前做过使用32位整数实现64位整数的四则运算实现。
Wolf0403
2004-04-05
打赏
举报
回复
一直设想用 unsigned long 数组拼接起来可以达到最大利用率,但是数学不好,sigh。。。
Areece
2004-04-04
打赏
举报
回复
32位平台下做64位的运算吗?应该是用结构实现。
yeswelkin
2004-04-04
打赏
举报
回复
不知说的是什么意思
路过,帮顶
newegg2002
2004-04-04
打赏
举报
回复
嗯?
怎么弄得我一头雾水啊。。楼主是什么意思。。说清楚点,,好不,,说不定还能帮上忙。。现在也只好帮忙先顶一下了。。
C++
大
整数
运算
C++
关于大
整数
类的相关
运算
包括重载加减乘除,赋值,输出和比较
运算
C++
大
整数
运算
代码
用
c++
写的大
整数
四则
运算
程序,用栈实现的,比较麻烦,仅用于学习。
c++
实现任意长
整数
的四则
运算
参考.pdf
c++
实现任意长
整数
的四则
运算
参考.pdf
数据结构
c++
长
整数
四则
运算
数据结构
c++
长
整数
四则
运算
c++
/c长
整数
四则
运算
利用双向链表实现长
整数
的存储,每个结点含一个整型变量。设计一个实现任意长的
整数
进行四则
运算
的演示程序。
工具平台和程序库
24,860
社区成员
27,333
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章