OpenJudge 2980 大整数乘法
2014-01-13 09:48
357 查看
链接地址:http://bailian.openjudge.cn/practice/2980/
题目:
思路:
套大整数乘法模板即可
代码:
题目:
总时间限制:1000ms内存限制:65536kB描述求两个不超过200位的非负整数的积。输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入
样例输出
来源程序设计实习2007
12345678900 98765432100
样例输出
1219326311126352690000
来源程序设计实习2007
思路:
套大整数乘法模板即可
代码:
#include <iostream> #include <string> #include <vector> #include <cstdio> #include <algorithm> using namespace std; string mul(string str1,string str2) { vector<int> v_res(str1.size()+str2.size(),0); string::size_type i,j; vector<int>::size_type k,p; reverse(str1.begin(),str1.end()); reverse(str2.begin(),str2.end()); for(i = 0; i != str1.size(); ++i) { for(j = 0; j != str2.size(); ++j) { v_res[i+j] += (str1[i]-'0') * (str2[j] - '0'); } } for(k = 0; k != v_res.size() - 1; ++k) { v_res[k+1] += v_res[k] / 10; v_res[k] = v_res[k] % 10; } for(p = v_res.size() - 1; p != -1; --p) { if(v_res[p] != 0) break; } if(p == -1) p = 0; string s_res(p+1,'0'); for(k = p; k != -1; --k) s_res[p-k] = char(v_res[k] + '0'); return s_res; } int main() { string str1,str2; cin>>str1>>str2; cout<<mul(str1,str2)<<endl; return 0; }
相关文章推荐
- 百练2980 大整数乘法
- 百练 2980 大整数乘法
- 百炼2980:大整数乘法
- 百练2980 大整数乘法
- OpenJ_Bailian 2980 || POJ 2389 大整数乘法
- Pku百练2980(大整数乘法)
- 百炼 2980 大整数乘法
- 2980 大整数乘法
- POJ 百练 2980:大整数乘法
- POJ2980大整数乘法
- POJ 2980 大整数乘法 解题报告
- 百练_2980大整数乘法(大数相乘)
- 百练oj2980 大整数乘法
- 大整数的乘法与加法
- 两个大整数的乘法
- 20150328晚,不使用乘号运算符实现两个整数乘法
- 算法学习-分治法-大整数乘法
- OpenJudge 2981 大整数加法 C++
- 大整数乘法
- 贪心算法-大整数乘法/加法/减法