3117 高精度练习之乘法
来源:互联网 发布:张国荣 知乎 编辑:程序博客网 时间:2024/05/21 06:25
3117 高精度练习之乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold题目描述 Description给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。输入描述 Input Description读入两个用空格隔开的正整数输出描述 Output Description输出A*B的值样例输入 Sample Input3 12样例输出 Sample Output36数据范围及提示 Data Size & Hint两个正整数的位数不超过500位******************************去除前导0用的指针i可以初始值为la+lb-1,优化******************************乘法乘出来的数需要累加,不能像加法那样位数相对,故需要直接在答案数组上动手脚******************************加法也可以这样做,省去申请一个变量的空间 #include<iostream>#include<string.h>using namespace std;void Multiply(int a[],int b[],int la,int lb);void run(char a[],char b[]){int A[501],B[501];int i,j,la = strlen(a),lb = strlen(b); memset(A,0,sizeof(A)); memset(B,0,sizeof(B));for(i = 0; i < la; i++){A[i] = a[la-i-1] - '0';}for(i = 0; i < lb; i++){B[i] = b[lb-i-1] - '0';}Multiply(A,B,la,lb);}void Multiply(int a[],int b[],int la,int lb){int i,j = 0,ANS[510];int tmp1 = 0 , tmp2 = 0;memset(ANS,0,sizeof(ANS)); for(i = 0; i < la; i++) { for(j = 0; j < lb; j++) { ANS[i+j] = a[i]*b[j] + ANS[i+j]; ANS[i+j+1] += ANS[i+j] / 10;ANS[i+j] %= 10; } } i = la+lb-1; //i = 510 可否优化? while(ANS[i] == 0) i--; for(j = i; j >= 0; j--) cout<<ANS[j]; cout<<endl;}int main(){char a[501],b[501];cin>>a>>b;run(a,b);return 0;}
0 0
- 3117 高精度练习之乘法
- 3117 高精度练习之乘法
- 3117 高精度练习之乘法
- 高精度-codevs-3117高精度练习之乘法
- ACM 3117 高精度练习之乘法(基础)
- Codevs 3117 高精度练习之乘法
- code[vs] 3117 高精度练习之乘法
- codevs 3117 高精度练习之乘法
- p3117 高精度练习之乘法
- 1532: 高精度练习之乘法
- wikioi天梯之3117 高精度练习之乘法
- 【codevs 3115 3116 3117】高精度练习之加/减/乘法
- wikioi3123 高精度练习之超大整数乘法
- 高精度之高精度乘法
- 【CodeVS 3123】 高精度练习之超大整数乘法
- CODEVS 3123 高精度练习之超大整数乘法
- cv3123 高精度练习之超大整数乘法(FFT)
- 高精度运算之乘法
- iis站点获取时间日期问题
- foobar 解决dts和sacd的问题
- POJ-2739 Sum of Consecutive Prime Numbers
- JDBC
- 保存的博客(更新中。。。。。)
- 3117 高精度练习之乘法
- git学习历程
- Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOv
- 1045 access denied for user 'root'@'localhost' using password yes
- struts中action名称重复导致的奇异事件
- 64位Linux系统编译32位汇编程序
- hdu 1573 同余定理
- Spring 实现数据库读写分离
- 【基础】java 条件语句 if