C++实现——两个大数相乘
来源:互联网 发布:网络机顶盒如何使用 编辑:程序博客网 时间:2024/05/29 15:44
#include <iostream>#include <vector>#include <string>using namespace std;//大数相乘/***num1 乘数1*num2 乘数2*return 结果字符串*/string BigMutiple(string num1, string num2){ string res=""; //两个数的位数 int m = num1.size(), n = num2.size(); //一个i位数乘以一个j位数,结果至少是i+j-1位数 vector<long long> tmp(m + n - 1); //每一位进行笛卡尔乘法 for (int i = 0; i < m; i++){ int a = num1[i] - '0'; for (int j = 0; j < n; j++){ int b = num2[j] - '0'; tmp[i + j] += a*b; } } //进行进位处理,注意左侧是大右侧是小 int carry = 0; for (int i = tmp.size() - 1; i >= 0; i--){ int t = tmp[i] + carry; tmp[i] = t % 10; carry = t / 10; } //若遍历完仍然有进位 while (carry != 0){ int t = carry % 10; carry /= 10; tmp.insert(tmp.begin(), t); } //将结果存入到返回值中 for (auto a : tmp){ res = res + to_string(a); } if(res.size()>0&&res[0]=='0')return "0"; return res;}//测试函数int main(){ string num1, num2; while (cin >> num1 >> num2){ cout << BigMutiple(num1, num2) << endl; } return 0;}
0 0
- C++实现——两个大数相乘
- C语言实现两个大数相乘
- 实现两个大数相乘
- 两个大数相乘(转)C
- 两个大数相乘-python实现
- Java实现两个大数相乘
- 华为2012校园招聘上机题——大数相乘,两个超过100位的大数相乘C语言
- 超级计算器——两个大数相乘
- 大数相乘-C语言实现
- c语言实现大数相乘
- C语言实现大数相乘
- 两个大数相乘的C++实现
- 海豚实习-实现两个大数相乘
- 两个大数相乘
- 两个十进制大数相乘
- 两个大数相乘
- (转)两个大数相乘
- 两个大数相乘
- Jenkins安装与配置
- 编程精华资源大汇总
- js打印 PrintArea-master
- PHP内核探索——入门
- 工作中实际问题
- C++实现——两个大数相乘
- 如何用迅雷从百度云盘下大文件
- 关于控件Controls随Dialog改变大小 && CDialogResize的总结
- android listview多种布局 getViewTypeCount和getItemViewType
- bzoj1926: [Sdoi2010]粟粟的书架
- SpringMVC Controller 介绍
- 数组中超过一半的数
- 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清
- 安卓开发中内存问题分析(一)工具篇