A*B Problem
题目背景
高精度乘法模板题。
题目描述
给出两个非负整数,求它们的乘积。
输入格式
输入共两行,每行一个非负整数。
输出格式
输出一个非负整数表示乘积。
样例 #1
样例输入 #1
1
2
样例输出 #1
2
提示
每个非负整数不超过 10^{2000}。
入坑OI这么久 发现还没有写过高精乘高精的题目
于是今天就来写一下啦
思路就是用小学时就学过的列竖式思想
注意一下输入输出和前导零就行
不打注释了喵
#include<bits/stdc++.h> #define ll long long using namespace std; string a,b; int k[2005],n[2005]; int num[200005]; int main(){ cin>>a>>b; int l=a.length(),m=b.length(); for(int i=1;i<=l;i++){ k[i]=a[l-i]-'0'; } for(int i=1;i<=m;i++){ n[i]=b[m-i]-'0'; } int x=l+m-1; for(int i=1;i<=l;i++){ for(int j=1;j<=m;j++){ num[i+j-1]+=k[i]*n[j]; num[i+j]+=num[i+j-1]/10; num[i+j-1]%=10; } }//采用列竖式的思想 int flag=0; for(int i=1;i<=l+m;i++){ if(num[i]){ flag=1; break; } } if(flag==0){ cout<<0; system("pause"); return 0; } if(num[x+1]>=1) x++; while(num[x]==0&&x>=2) --x; for(int i=x;i>=1;i--){ cout<<num[i]; } system("pause"); return 0; }
标签:洛谷,非负,int,高精度,样例,整数,P1303,乘法 From: https://www.cnblogs.com/namelessstory/p/18677751