C++版大数相乘
2013-12-18 17:32
225 查看
#include<iostream> #include<vector> #include<string> #include<algorithm> using namespace std; vector<int> Multiply(string &str1,string &str2) { vector<int>vec(str1.size()+str2.size(),0); for(int i = str2.size()-1 , m = 0; i >= 0; i--, m++) { for(int j = str1.size()-1 ,k = 0; j >= 0; j--, k++) { vec[k+m] += (str2[i] - '0')*(str1[j] - '0') ; } } return vec; } void Dealvector(vector<int>&vec) { for(int i = 0; i < vec.size(); i++) { if( vec[i] >= 10) { vec[i+1] = vec[i+1] + vec[i]/10; vec[i] = vec[i] %10; } } } string getresult(vector<int>&vec) { int len = vec.size()-1; while(vec[len] == 0 && len-- >1)vec.pop_back(); vec.shrink_to_fit(); string result = ""; for_each(vec.rbegin(),vec.rend(),[&](int num) { result.append(to_string(num)); }); return result; } int main(){ string str = "9999"; string str2 = "9999"; vector<int> vec( Multiply(str,str2)); Dealvector(vec); string res = getresult(vec); return 0; }
相关文章推荐
- C++之自定义API函数“大数相乘算法”
- ACM大赛题 【C++大数相乘】
- ACM大赛题 【C++大数相乘】
- 大数相乘 C++实现
- 两个大数相乘的C++实现
- C++ 大数相乘算法
- 大数相加 大数相乘 C++
- 2013第四届蓝桥杯 C/C++本科A组 排它平方数(2个数相乘为大数,大数位标记的方法)
- C/C++编程题之大数相乘
- 大数相乘 C++实现
- C++实现的大数相乘算法示例
- C++大数相乘
- C++ 快速幂取模+大数相乘取模
- 大数相乘的C++实现
- C++实现——两个大数相乘
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
- Linux C/C++ 编程练手 --- 大数相加和大数相乘
- C++ 实现大数相乘
- [转] 一个大数相乘的C/C++实现
- 算法:C++实现大数相乘