真正热爱祖国|

nasia

园龄:2年粉丝:3关注:16

A*B Problem(High)

这高精度是真__的难

题目描述

给出两个自然数,求它们的乘积。

输入格式

输入共两行,每行一个自然数。

输出格式

输出一个自然数表示乘积。

样例 #1

样例输入 #1

1
2

样例输出 #1

2

提示

每个自然数不超过 102000

code:

#include <bits/stdc++.h>
using namespace std;
int a[2023],b[2023],c[4000001];
string x,y;
int main(){
cin>>x>>y;
int n = x.size(),m = y.size();
for(int i = 0;i<n;i++) a[i] = x[n-i-1] - '0';
for(int i = 0;i<m;i++) b[i] = y[m-i-1] - '0';
int t = n+m-1;
for(int i = 0;i<n;i++)
for(int j = 0;j<m;j++)
c[i+j] += a[i] * b[j];
for(int i = 0;i<t;i++){
c[i+1] += c[i]/10;//用+=是因为可能有进位
c[i] %= 10;//进位后的实际情况
}
while(c[t] != 0){
c[t+1]+=c[t]/10;
c[t]%=10;
t++;
}
while(c[t-1] == 0 and t > 1) t--;
for(int i = t-1;i >= 0;i--) cout<<c[i];
return 0;
}

本文作者:nasia

本文链接:https://www.cnblogs.com/nasia/p/17533991.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   nasia  阅读(15)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示