高精度乘法———列表法
来源:互联网 发布:涂师傅数据恢复 编辑:程序博客网 时间:2024/05/19 03:25
/*列表法——高精度乘法*/ #include<stdio.h> #include<string.h>#define maxsize 101void compute(char *a,char *b,char *c){ int i,j,carry,sum,m=strlen(a)-1,n=strlen(b)-1; for(i=0;i<=m;i++)a[i]-='0'; for(j=0;j<=n;j++)b[j]-='0'; //字符数字化 c[m+n+2]='\0'; //字符串标志位 carry=0; //初始化进位 for(i=m+n;i>=0;i--){ //结果控制位 ,a上,b下,纵向模拟 sum=carry; //把上一层进位加入 if((j=i-m)<0)j=0; //防止到M位之后,B的位序为负 for(;j<=i&&j<=n;j++) sum+=a[i-j]*b[j]; //关键步骤,位数和要等于当前位数,即i=i-j+j c[i+1]=sum%10+'0'; //字符化结果 carry=sum/10; //进位 } if((c[0]=carry+'0')=='0')c[0]='#';//最高位只可能是进位来的 }void display(char *c){ int j=strlen(c),i=0; if(c[0]=='#')i++; //判断最高位是否进位 for(;i<j;i++)printf("%c",c[i]); printf("\n");}int main(){ char a[maxsize],b[maxsize],c[2*maxsize]; //相乘位数考虑 while(scanf("%s",a)!=EOF&&scanf("%s",b)!=EOF){ compute(a,b,c); display(c); }}
阅读全文
0 0
- 高精度乘法———列表法
- 高精度——乘法
- POJ2389 —— 高精度乘法
- 高精度运算——实数乘法
- 大数系列——高精度乘法
- Bull Math(高精度——乘法)
- 高精度乘法——一步一步算法篇
- [解答]高精度乘法——1000!
- 算法提高 高精度乘法 ————大数乘法
- C 语言高精度算法(二)——乘法
- 高精度加乘法——四位改良版
- 高精度——高精度减法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 查询5037端口被占用
- 编译原理:递归向下分析程序建立语法分析树的Java实现(一)
- 网页2.点击链接打开窗口
- Anaconda+PyCharm+opencv
- 高斯卷积核如何生成 C语言实现
- 高精度乘法———列表法
- Spring MVC 到底是如何工作的?
- liang-Barskey算法
- sublime各种报错 unexpected indent Vue的ESlint缩进问题
- hdoj-4970Killing Monsters(树状数组)
- 进程间的痛信2
- iphoneX面部识别带来的隐私问题
- Java作业-十个人过山洞(多线程)
- (c++)数据结构与算法之链表线性表的应用:银行叫号系统