高精度乘法(正整数)
来源:互联网 发布:neu的数据分析 编辑:程序博客网 时间:2024/05/17 01:37
高精度正整数乘法,包含了高精度正整数的加法。就是最简单的字符串处理,注意一些细节就行。某个oj上编译错误了好几发,后来发现to_string是c++11支持的,自己重写了to_string才AC。
代码如下:
// 1036.cpp : 定义控制台应用程序的入口点。// 大整数乘法#include "stdafx.h"#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;//大整数加法string add(string s1, string s2){reverse(s1.begin(), s1.end());reverse(s2.begin(), s2.end());int max_size = s1.size() > s2.size() ? s1.size() : s2.size();//统一长度if (s1.size() > s2.size()){int diff = s1.size() - s2.size();for (int i = 0; i < diff; i++){s2.push_back('0');}}else{int diff = s2.size() - s1.size();for (int i = 0; i < diff; i++){s1.push_back('0');}}int flag = 0;string ans;for (int i = 0; i < max_size; i++){int cur = (s1[i] - '0') + (s2[i] - '0') + flag;if (cur >= 10){ans.push_back(cur - 10 + '0');flag = 1;}else{ans.push_back(cur + '0');flag = 0;}}if (flag != 0)ans.push_back(flag + '0');reverse(ans.begin(), ans.end());return ans;}//大整数乘法string product(int a, int b){string a_ = to_string(a);string b_ = to_string(b);int temp = 0;vector<string> nums;int cnt = 0;for (int i = b_.size() - 1; i >= 0; i--){int flag = 0;string s;for (int k = 0; k < cnt; k++)s.push_back('0');++cnt;for (int j = a_.size() - 1; j >= 0; j--){int cur = (b_[i] - '0')*(a_[j]-'0') + flag;if (cur >= 10){s.push_back((cur % 10) + '0');flag = cur / 10;}else{s.push_back(cur + '0');flag = 0;}}if (flag != 0)s.push_back(flag + '0');reverse(s.begin(), s.end());nums.push_back(s);}string ans = "";for (int i=0;i<nums.size();i++){ans=add(ans, nums[i]);}return ans;}int main(){int a, b;cin >> a >> b;cout << product(a, b) << endl;system("pause");return 0;}
阅读全文
0 0
- 高精度乘法(正整数)
- 高精度正整数乘法问题
- 高精度乘法,输入任意位的正整数,计算其结果,并显示计算过程(乘法竖式)
- 高精度乘法(不压位)
- 高精度乘法(小数)
- 高精度模板(乘法)
- 高精度(大整数乘法)
- POJ 3289(高精度乘法)
- 大整数乘法(高精度)
- 高精度(乘法和加法)
- (C语言)高精度乘法
- POJ 1001(高精度乘法)
- 高精度加法(仅限正整数)
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- 高精度乘法
- java面经整理(4)
- 【帝国CMS】栏目标签代码带链接
- Java8系列之重新认识HashMap
- 反方向打印链表。(2)
- HLS协议全解
- 高精度乘法(正整数)
- 归并排序
- 关于 KMP next 数组的应用
- 影响公众试听,阻碍社会发展!
- poj 1961
- Python如何在dic(字典)里面添加dic(字典) 附dic基础知识
- 编程小白的第一本python入门书
- 【机器人学】机器人开源项目KDL源码学习:(8)KDL的精髓
- Open vSwitch(OVS)相关问题