__Rickysun__ @ 2024-02-13 11:16:31
rt 可以不发AC代码,给我个思路就行,阿巴阿巴|ω・`)
by DFs_YYDS @ 2024-02-13 11:20:32
@Rickysun 跟乘法列竖式的原理差不多啊
by __Rickysun__ @ 2024-02-13 11:23:36
@DFs_YYDS 原理知道,代码不会写
by Istruggle @ 2024-02-13 11:24:19
那你就背代码呗
by DFs_YYDS @ 2024-02-13 11:24:22
@Rickysun 稍等,正在修改80分代码
by DFs_YYDS @ 2024-02-13 11:26:04
@Rickysun 艹,没特判0
by DFs_YYDS @ 2024-02-13 11:27:18
@Rickysun 把每一位乘之后的数用数组存起来,最后进位
by heyx0201 @ 2024-02-13 11:42:46
@Rickysun lz目前目标?
如果是pj那么背代码就行了,反正也就那么点东西,很好理解的
by rnf5114 @ 2024-02-13 11:43:21
#include<iostream>
#include<cstring>
using namespace std;
string a1,b1;
int a[2010],b[2010],ans[4010],t,s;
int main(){
cin >> a1 >> b1;
int len1 = a1.size();
int len2 = b1.size();
int lenc =len1+len2;
for(int i = 0;i<len1;i++)
a[i] = a1[len1-i-1] - '0';
for(int i = 0;i<len2;i++)
b[i] = b1[len2-i-1] - '0';
for(int i=0;i<len1;i++){
for(int j=0;j<len2;j++){
ans[i+j]+=a[i]*b[j];
}
}
for(int i=0;i<lenc;i++){
if(ans[i]>9){
ans[i+1]+=ans[i]/10;
ans[i]%=10;
}
}
t=lenc-1;
while(t>0&&!ans[t]){
t--;
}
for(int i=t;i>=0;i--){
cout<<ans[i];
}
return 0;
}
@Rickysun
by masonxiong @ 2024-02-14 12:48:55
楼上正解,完全能够通过本题
但是这里提供一些优化,比如说一个从常数上提供极大优化的方案,即“压位高精度”,将原来的十进制竖式计算改成百进制之类,假设压
当然这只是在常数上的简单优化,在数据特别大的时候就不管用了
这个时候我们就可以参考 oiwiki:
在数据规模大的时候,建议使用 Karatsuba 乘法(速度可以达到