sicily 1381. a*b

原创 2015年11月18日 20:07:30

1381. a*b

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

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

题目分析

理同1201
先反转字符串,
思考如何变成字符串与个位数的乘法
注意前缀零和结果为零


#include <iostream>
#include <memory.h>

int ans[106];

std::string reverse(std::string s) {
  std::string sss = "";
  for (int i = s.length()-1; i >= 0; --i)
    sss += s[i];
  return sss;
}

void add(std::string s, int times) {
  for (int i = 0; i < s.length(); ++i) {
    ans[i] += (s[i]-'0') * times;
    if (ans[i] > 9) {
      ans[i+1] += ans[i] / 10;
      ans[i] %= 10;
    }
  }
}

int main()
{
  int num;
  std::cin >> num;
  while (num--) {
    memset(ans, 0, sizeof(ans));
    std::string s;
    int times;
    std::cin >> s >> times;
    s = reverse(s);
    while (times != 0) {
      int temp = times % 10;
      add(s, temp);
      s = "0" + s;
      times = (times - temp) / 10;
    }
    bool pre = true;
    for (int i = 105; i >= 0; --i) {
      if (pre && ans[i] == 0)
        continue;
      pre = false;
      std::cout << ans[i];
    }
    if (pre) std::cout << "0";
    std::cout << std::endl;
  }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

sicily 1381. a*b

1381. a*b Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description Give two positive in...
  • yuhao199555
  • yuhao199555
  • 2015年05月28日 01:13
  • 383

Sicily 1381. a*b

#include using namespace std; int digit[1000]; void mul(string str,int a){ int jinwei=0,n=0; ...
  • luqinwei
  • luqinwei
  • 2015年01月11日 12:21
  • 193

Sicily 1381. a*b【高精度乘法】

题目链接在此
  • CharlieLincy
  • CharlieLincy
  • 2014年11月07日 21:02
  • 1120

Sicily求A-B(也即求A对B的差集)

题目描述思路介绍:①使用vector存储AB ②使用unique与erase对AB分别进行去重 ③开辟一个标记数组,使用二重循环...
  • wyxwyx469410930
  • wyxwyx469410930
  • 2017年12月22日 00:29
  • 69

sicily1381 a*b (高精度乘法)

一道高精度乘法的题,挺基础的,不过这道题我WA了好几次了,后来才发现原来是忘了处理当输入的a或b任何一个为0的时候都要输出0这种情况了,唉,思维还是不够缜密啊,Acm的路还很长。。。 #includ...
  • chenhuajie123
  • chenhuajie123
  • 2012年03月20日 21:58
  • 1663

1381. a*b 大数相乘

1381. a*b Description Give two positive integers a and b, please help us calculate a*b. Input The...
  • u010858667
  • u010858667
  • 2013年09月05日 19:49
  • 883

1381. a*b

很早前做的高精度,贴上来 #include #include using namespace std; int main() { int t; cin >> t; while(t--...
  • sina012345
  • sina012345
  • 2013年10月11日 23:55
  • 397

1381. a*b 高精度计算乘法

/*1381. a*b 高精度计算乘法 1、按位加 2、乘法运算拆分。如12 * 24可以分成 12*4 + 120 * 2 */ #include #include #i...
  • xiehaoyun2012
  • xiehaoyun2012
  • 2013年01月04日 15:23
  • 214

sicily 1156.Binary tree

这道题又让我明白了几个道理 (1) 调用memset的头文件是memory.h 而不是  (2) a[100]={1}是没用的,必须用memset对整个数组赋值或者循环赋值 (3) 先序遍历树之前,一...
  • luoshengkim
  • luoshengkim
  • 2014年12月15日 17:08
  • 664

Tree - 0003

Description Background Binary trees are a common data structure in computer science. In this prob...
  • hz2217
  • hz2217
  • 2018年01月06日 22:47
  • 19
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sicily 1381. a*b
举报原因:
原因补充:

(最多只允许输入30个字)