算法学习【4】 - 1381. a*b
来源:互联网 发布:windows错误报告 很大 编辑:程序博客网 时间:2024/06/05 02:32
题目:http://soj.me/1381
1381. a*b
Description
Give two positive integers a and b, please help us calculate a*b.
Input
The first line of the input is a positive integer T. T is the number of test cases followed.
Each test case contain two integer a,b (0<=a<=10^100, 0<=b<=10,000) given in one line.
Output
The output of each test case should consist of one line, contain the result of a*b.
Sample Input
12 7
Sample Output
14
Problem Source
Algorithm Course Examination 2006
思路:大整数乘法,稍微修改了下,把b当成int叠加吧,感觉这种方法比较简单。
代码:
#include <iostream>#include <string>using namespace std;string BigAdd(string a, string b){while (a.size() < b.size()){a = '0' + a;}while (a.size() > b.size()){b = '0' + b;}a = '0' + a;b = '0' + b;for (int i = a.size() - 1; i > 0; i--){a[i] = a[i] + b[i] - '0';if (a[i] > '9'){a[i] = a[i] - 10;a[i - 1] = a[i - 1] + 1;}}int zeroNum = 0;for (int j = 0; j < a.size(); j++){if (a[j] == '0'){zeroNum++;} else{break;}}if (zeroNum == a.size()){a = '0';} else{a = a.substr(zeroNum, a.size() - zeroNum);}return a;}string specialMul(string a, int b){string sum = "0";for (int i = 0; i < b; i++){sum = BigAdd(sum, a);}return sum;}int main(){int size;string a;int b;cin >> size;while (size--){cin >> a >> b;cout << specialMul(a, b) << endl;}return 0;}
- 算法学习【4】 - 1381. a*b
- 算法学习 -- a+b
- 【高精度算法】A*B
- 【高精度算法】A+B
- 【高精度算法】A+B
- A/B测试学习
- 算法题:A除以B
- 算法2.5:链式A+B
- 算法训练 A+B Problem
- 算法训练 A+B Problem
- 算法训练 A+B problem
- 算法学习 A*算法
- a<b extends c> 学习
- 【算法导论学习-009】仅使用Random(0,1)实现Random(a,b)
- 数据结构学习笔记<二> 算法2.1的具体实现,合并集合A,B
- 1381. a*b
- Sicily 1381. a*b
- 1381. a*b
- NIO资料整理
- xml的5 个预定义的实体引用
- DIB与DDB的区别
- SIP中的INFO
- android-sdk-windows版本下载
- 算法学习【4】 - 1381. a*b
- Css+Js图片滚动展示代码
- PostgreSQL热备份时pg_start_backup() 做了什么?
- 字符串写入文件
- poj2039
- Delphi中destroy, free, freeAndNil, release用法和区别
- JSP读取远程图片保存到linux服务器(oracle服务器)-不失真
- Js图片滚动代码,横向纵向滚动,面向对象代码
- flex中的动画以及窗体的布局