C++ 高精度乘法
来源:互联网 发布:重工刺绣衣服知乎 编辑:程序博客网 时间:2024/06/18 18:50
题目描述:
给定两个位数不超过100位的正整数,求它们的乘积。
输入描述:
输入文件中包含多个测试数据。每个测试数据占两行,分别为一个正整数,
每个正整数的位数不超过100位。输入数据一直到文件尾。
输出描述:
对输入文件中的每个测试数据,输出其中两个正整数的乘积。
样例输入:
981567
32976201
123456789
987654321
123456789987654321
987654321123456789
样例输出:
32368350686967
121932631112635269
121932632103337905662094193112635269
源代码:#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string>#include <algorithm>#include <string.h>using namespace std;string BigMul(string s,string t){ int sum[10005] = {0},a[10005],b[10005],tmp,extra,i,j,start,length1,length2; char goal[10005]; reverse(s.begin(),s.end()); reverse(t.begin(),t.end()); length1 = s.length(); length2 = t.length(); for(i = 0;i < length1;i++){ a[i] = (int)(s[i] - '0'); } for(i = 0;i < length2;i++){ b[i] = (int)(t[i] - '0'); } for(i = 0;i < length1;i++){ start = i; for(j = 0;j < length2;j++){ sum[start] += a[i]*b[j]; start ++; } } for(i = 0;i < start;i++){ sum[i + 1] += sum[i] / 10; sum[i] = sum[i] % 10; } while(sum[i] == 0){ i --; } start = 0; for(j = i ;j >= 0;j--){ goal[start] = (char)(sum[j] + '0'); start ++; } goal[start] = '\0'; return (string)goal;}int main(){ freopen("in.txt","r",stdin); string s,t; while(cin>>s>>t){ //cout<<s<<" "<<t<<endl; cout<<BigMul(s,t)<<endl; }}
0 0
- 【C++】高精度乘法
- C语言 高精度乘法
- C-高精度乘法
- C语言中的高精度乘法
- C语言 · 高精度乘法
- C语言 · 高精度乘法
- C语言 · 高精度乘法
- C语言 · 高精度乘法
- (C语言)高精度乘法
- 高精度乘法计算 poj1001 Exponentiation C代码
- 关于C语言实现高精度乘法运算
- 整数大数模拟 高精度加法 高精度减法 高精度乘法 高精度除法 c/c++ java
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- CheckIO: Moore Neighbourhood
- android项目大全,总有你所需的
- python 与 c/c++之间的互相调用
- Oracle中%TYPE和%ROWTYPE说明
- 详细分析make uboot 最后的编译链接的具体执行过程
- C++ 高精度乘法
- 比较有用的网站
- 【划分型DP】数字游戏
- 2014-10-17-State状态
- Hibernate基础教程的Demo代码下载
- Android多媒体之AMR
- HDU 1232 畅通工程
- 取出NSString当中的单个字符
- 中软Java学习8月10日笔记