数据结构与算法——两个大整数的乘积问题
2016-03-26 19:59
603 查看
2016年腾讯实习在线笔试题目:大整数乘法
输入数据有两行,分别是两个非负整数,最多1000位,输出它们的乘积。示例:
输入:
213897129837128937123
43502789523572345
输出:
9305121819000846375051201723846663435
/************************************************************************* > File Name: string_big_num.cpp > Author: > Mail: > Created Time: 2016年03月25日 星期五 22时32分13秒 ************************************************************************/ #include <iostream> #include <string> #include <algorithm> using namespace std; int result[2048] = {0}; int main() { string num1; string num2; cin >> num1; cin >> num2; int n = 0; int val; reverse(num1.begin(), num1.end()); reverse(num2.begin(), num2.end()); for(int i = 0; i < num1.size(); ++i){ int add_flag = 0; int muliti_flag = 0; for(int j = 0; j < num2.size(); ++j){ val = (num1[i]-48) * (num2[j]-48) + muliti_flag; muliti_flag = val / 10; val = val % 10; int temp = result[i+j] + val + add_flag; add_flag = temp / 10; result[i+j] = temp % 10; } result[i+num2.size()] += muliti_flag + add_flag; } //下面是将结果反转 int first = 0; int last = num1.size() + num2.size() - 2; int num = 0; while(first < last){ num = result[first]; result[first] = result[last]; result[last] = num; first++; last--; } //输出result中的内容 for(int i = 0; i < num1.size() + num2.size() - 1; ++i) cout << result[i]; cout << endl; return 0; }
测试结果:
相关文章推荐
- 排序算法白话实现
- 不相交集类算法
- 【数据结构栈应用系列】括号匹配
- 【数据结构栈应用系列】括号匹配
- HDU 3068 Manacher 模版题
- Redis常用数据结构及操作
- 大整数相乘(包含小数)
- 数据结构,可并堆(左偏树):COGS [APIO2012] 派遣
- Linux USB 驱动开发(二)—— USB 驱动几个重要数据结构
- 数据结构之线性表ArrayList小结(一)
- 《数据结构与算法分析C++描述》别人总结
- 二叉排序树
- python 下的数据结构与算法---5:递归(Recursion)
- 算法和数据结构学习笔记(2)——线性表
- Java中常见数据结构:list与map
- JavaScript数据结构——链表
- HDU 4286 Data Handler(splay)
- poj 3468 A Simple Problem with Integers
- bzoj 1588 营业额统计
- 《STL源码剖析》之容器