• 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 }
  • 相关阅读:
    HTML5边玩边学(2)
    Get Mac NetBIOS
    NetBios协议详解及网上邻居工作原理
    DXperience Universal 10.1.6
    HTML5边玩边学(1)
    《UML和模式应用》读书笔记(二)
    static instance examples
    自己写的虚拟主机管理系统..和大家分享
    一个不错的net的User Interface Components
    Infragistics系列控件
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3516915.html
Copyright © 2020-2023  润新知