数组实现大数四则运算
来源:互联网 发布:dg加密软件 编辑:程序博客网 时间:2024/06/07 01:30
ACM中一些题涉及大数运算,而long long int或_int64 或许在本机可行,但在服务器上就不一定跑的通了
当然,办法是有的 。
今讲讲其中的数组实现:
大概思路:
用一个一维数组来存储一个大数,每个数组元素存储一个数位,在此基础上实现加减乘除四则运算
int chai(int a[],int x)//将大数x拆分倒着存入数组 例如123->a[0]=3,a[2]=1;{ int i=0; while(x>=10) { a[i++]=x%10; x/=10; } a[i]=x; return i;//返回有效数字长度}
首先是最简单的加法:
void jia(int num[],int num_i,int b[],int b_i)//num代表的数加上b代表的数,num_i代表num的长度{ //默认mun_i>=b_i int i=0; for(i;i<=num_i;i++)//若num_i由函数chai()得来,则为i<=num_i num[i]+=b[i];//一一相加 if(num[i]>=10) //进位运算 { num[i+1]+=num[i]/10; num[i]%=10; }}
减法:
void jian(int num[],int num_i,int b[],int b_i)//num代表的数减去b代表的数{ //默认mun_i>=b_i int i=0; for(i;i<num_i;i++) num[i]-=b[i];//一一相减 if(num[i]<0) //补位运算 { num[i]+=10; num[i+1]-=1; }}
乘法运算:
void cheng(int a[],int a_i,int b[],int b_i,int num[])//a[],b[]相乘存到num[]{ //默认a_i>=b_i 其实无所谓 int i,j; for(i=0;i<=a_i;i++) { for(j=0;j<=b_i;j++) { num[i+j]+=a[i]*b[j];//num[]初始化为0 } }}//num[]计算完毕后要进行进位运算才可以正常以十进制展示结果
除法运算:
目前只做了大数除以小整数。。。先不写
0 0
- 数组实现大数四则运算
- 大数四则运算的实现
- 实现大数四则运算
- 大数四则运算的C++实现
- 大数四则运算的C++实现
- 大数四则运算的C++实现
- 大数四则运算的C++实现
- C++实现大数的四则运算
- 大数运算实现加减乘除四则运算
- 大数四则运算的C++实现
- 大数四则运算的C++实现(转)
- 大数四则运算的C++实现(转)
- 【转】大数四则运算的C++实现
- 双向循环链表实现大数四则运算
- 大数四则运算
- 大数四则运算
- 大数四则运算
- 大数四则运算
- uva 532
- 实现一个自己的网络浏览器
- 逻辑运算
- bzoj 2721: [Violet 5]樱花 线性筛
- 【Hibernate】---- 锁
- 数组实现大数四则运算
- java学习(8)
- 《利用Python进行数据分析》第二章pivot_table报错问题
- flume高并发优化——(13)扩展三级文件配置&利用Headers扩展属性
- XML注释与取消注释快捷键
- RelativeLayout相对布局和ImagView、RadioGroup
- 定时脚本
- 个人总结
- Java Happen-Before规则