zoukankan      html  css  js  c++  java
  • 1027 大数乘法

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
     
    给出2个大整数A,B,计算A*B的结果。
     
    Input
    第1行:大数A
    第2行:大数B
    (A,B的长度 <= 1000,A,B >= 0)
    Output
    输出A * B
    Input示例
    123456
    234567
    Output示例
    28958703552

    大数乘法模板,当然这不是最优算法。
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 string s,ss;
     4 
     5 string bigmulti(string s,string ss){
     6     int slen = s.length();
     7     int sslen= ss.length();
     8     int st[20100];
     9     string tt="";
    10     reverse(s.begin(),s.end());
    11     reverse(ss.begin(),ss.end());
    12     for(int i=0;i<slen;i++){
    13         for(int j=0;j<sslen;j++){
    14             st[i+j] += (s[i]-'0')*(ss[j]-'0');
    15         }
    16     }
    17     for(int i=0;i<slen+sslen;i++){
    18         st[i+1]+=st[i]/10;
    19         st[i]=st[i]%10;
    20     }
    21     int index;
    22     for(int i=slen+sslen;i>=0;i--){
    23         if(st[i]!=0){
    24             index = i;
    25             break;
    26         }
    27     }
    28     for(int i=0;i<=index;i++){
    29         tt+=st[i]+'0';
    30     }
    31     reverse(tt.begin(),tt.end());
    32     return tt;
    33 }
    34 int main(){
    35     while(cin>>s>>ss){
    36         bool sflag=true, ssflag=true;
    37         if(s[0]=='-'){
    38             s.erase(0,1);
    39             sflag = false;
    40         }
    41         if(ss[0]=='-'){
    42             ss.erase(0,1);
    43             ssflag = false;
    44         }
    45         cout<<bigmulti(s,ss)<<endl;
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    搜索专题
    KMP专题
    CSU 1326: The contest(分组背包)
    强连通专题
    MST:Bad Cowtractors(POJ 2377)
    MST:Agri-Net(POJ 1258)
    ShortestPath:Layout(POJ 3169)(差分约束的应用)
    MST:Conscription(POJ 3723)
    MST:Roadblocks(POJ 3255)
    DP:Space Elevator(POJ 2392)
  • 原文地址:https://www.cnblogs.com/zllwxm123/p/8947133.html
Copyright © 2011-2022 走看看