各位大佬们,求调

P1303 A*B Problem

dalao啊,你这个代码我看着都不像这题的,我都看不懂了,有点复杂,我给你我的代码参考一下
by wuzhiyuan123 @ 2024-02-21 20:58:08


```cpp #include <iostream> #include <cstdio> #include <string> using namespace std; string a1,b1; int a[1000010],b[1000010],c[1000010]; int main() { //freopen("input.txt", "r", stdin);//这行代码在提交的时候记得删掉,如果你不知道这行代码的意思可以删掉 cin >> a1 >> b1; int len1 =0; //不想算了,特判一下 if((a1.length()==1&&a1[1]==0)||(b1.length()==1&&b1[1]==0)){ cout << 0; return 0; } //输入,吧正着的倒过来 for(int i=a1.length()-1, j=1;i>=0;i--, j++){ a[j] = a1[i] - '0'; } for(int i=b1.length()-1, j=1;i>=0;i--, j++){ b[j] = b1[i] - '0'; } //开始做乘法,把a[i]*b[j]的结果放的c[i+j-1],至于为什么这么放画个表格就知道了 for(int i=1;i<=a1.length();i++){ for(int j=1;j<=b1.length();j++){ c[i+j-1]+=a[i]*b[j]; len1=max(i+j-1, len1); } } //进位 int len2=len1; for(int i=1;i<=len2;i++){ if(c[i]>=10){ int change = c[i]/10; c[i]=c[i]%10; c[i+1]+=change; if(i==len2) len1++; } } //倒着输出得到正的数 for(int i=len1;i>0;i--){ cout << c[i]; } return 0; } ```
by wuzhiyuan123 @ 2024-02-21 21:07:41


|