zoukankan      html  css  js  c++  java
  • OpenJudge 2980 大整数乘法

    链接地址:http://bailian.openjudge.cn/practice/2980/

    题目:

    总时间限制:
    1000ms
    内存限制:
    65536kB
    描述
    求两个不超过200位的非负整数的积。
    输入
    有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
    输出
    一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
    样例输入
    12345678900
    98765432100
    样例输出
    1219326311126352690000
    来源
    程序设计实习2007

    思路:

    套大整数乘法模板即可

    代码:

     1 #include <iostream>
     2 #include <string>
     3 #include <vector>
     4 #include <cstdio>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 string mul(string str1,string str2)
     9 {
    10     vector<int> v_res(str1.size()+str2.size(),0);
    11     string::size_type i,j;
    12     vector<int>::size_type k,p;
    13 
    14     reverse(str1.begin(),str1.end());
    15     reverse(str2.begin(),str2.end());
    16     for(i = 0; i != str1.size(); ++i)
    17     {
    18         for(j = 0; j != str2.size(); ++j)
    19         {
    20             v_res[i+j] += (str1[i]-'0') * (str2[j] - '0');
    21         }
    22     }
    23     for(k = 0; k != v_res.size() - 1; ++k)
    24     {
    25         v_res[k+1] += v_res[k] / 10;
    26         v_res[k] = v_res[k] % 10;
    27     }
    28 
    29     for(p = v_res.size() - 1; p != -1; --p)
    30     {
    31         if(v_res[p] != 0) break;
    32     }
    33     if(p == -1) p = 0;
    34 
    35     string s_res(p+1,'0');
    36     for(k = p; k != -1; --k) s_res[p-k] = char(v_res[k] + '0');
    37     
    38 
    39     return s_res;
    40 
    41 }
    42 
    43 
    44 int main()
    45 {
    46     string str1,str2;
    47     cin>>str1>>str2;
    48     cout<<mul(str1,str2)<<endl;
    49     return 0;
    50 }
  • 相关阅读:
    天下第一 (spfa判断环)
    网络的可靠性 (最小生成树)
    星际之门(一) (快幂+最小生成树)
    吝啬的国度 建图+深搜
    表达式求值 第九届河南省省赛
    Apple Tree (树形结构变为线性结构+树状数组)
    士兵杀敌(五)(线段树??)
    动物统计加强版
    Supermarket
    生活的烦恼
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3516915.html
Copyright © 2011-2022 走看看