洛谷 P1303 A*B Problem P1303 A*B Problem

题目描述

求两数的积。

输入输出格式

输入格式:

 

两行,两个数。

 

输出格式:

 

 

输入输出样例

输入样例#1: 复制
1 
2
输出样例#1: 复制
2

说明

每个数字不超过10^2000,需用高精

思路:模拟

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int num[10000];
string a,b;
int string_a[10000];
int string_b[10000];
int main(){
    cin>>a>>b;
      if(b=="0"||a=="0"){ cout<<0<<endl;return 0; }
      int n=a.length(),m=b.length();
      for(int i=n-1;i>=0;i--)
           string_a[n-i-1+1]=a[i]-'0';
      for(int i=m-1;i>=0;i--)
           string_b[m-i-1+1]=b[i]-'0';
    for(int i=1;i<=m;i++){
        int v=0;
           for(int j=1;j<=n;j++){
            num[i+j-1]+=string_b[i]*string_a[j];
            v=num[i+j-1]/10;
            num[i+j]+=v;
            num[i+j-1]=num[i+j-1]%10;
        }
      }
    for(int k=9999;k>=1;k--)
        if(num[k]!=0){
            for(int i=k;i>=1;i--)
                 cout<<num[i];
            break;
           }
}