LucyLyn @ 2023-08-28 01:30:59
#include<bits/stdc++.h>
using namespace std;
void add(vector<int>&s1,vector<int>&s2){
// if(s1.size()<s2.size()){
// s1.swap(s2);
// }
int l1=s1.size();
int l2=s2.size();
vector<int> res(l1+1,0);
for(int i=0;i<l2;i++){
res[l1-i] = res[l1-i]+s1[l1-i-1]+s2[l2-i-1];
if(res[l1-i] >= 10){
res[l1-i]-=10;
res[l1-i-1]++;
}
}
for(int i=l2;i<l1;i++){
res[l1-i] = res[l1-i]+s1[l1-i-1];
if(res[l1-i] >= 10){
res[l1-i]-=10;
res[l1-i-1]++;
}
}
s1.swap(res);
}
int main(){
int max = 5000;
string ss1,ss2;
cin>>ss1>>ss2;
if(ss1.size()<ss2.size()){
ss1.swap(ss2);
}
vector<int> s1(ss1.size());
vector<int> s2(ss2.size());
vector<int> res(max);
for(int i=0;i<ss1.size();i++){
s1[i]=ss1[i]-'0';
}
for(int i=0;i<ss2.size();i++){
s2[i]=ss2[i]-'0';
}
for(int i=0;i<s2.size();i++){
vector<int> t;
t = s1;
t.insert(t.begin(),0);
int lt = t.size();
int jin = 0;
for(int j=0;j<t.size();j++){
t[lt-j-1] = t[lt-j-1]*s2[s2.size()-i-1]+jin;
if(t[lt-j-1]>=10){
jin = t[lt-j-1]/10;
t[lt-j-1] %= 10;
}
}
for(int j=0;j<i;j++){
t.push_back(0);
}
add(res,t);
}
int x=0;
for(int i=0;i<res.size();i++){
if(res[i]){
x = i;
break;
}
}
if(x == 0){
cout<<0;
return 0;
}
for(int i=x;i<res.size();i++){
cout<<res[i];
}
}
by one_zero_two_zero @ 2023-08-28 03:28:10
稍微造小一点的数据对拍一下就可以了
我帮你拍了几组就出问题了
上面这一组就出问题,你的程序输出的是
by one_zero_two_zero @ 2023-08-28 03:31:36
还有,洛谷不是支持下载测试点的吗(doge
by LucyLyn @ 2023-08-28 13:33:45
@one_zero_two_zero 谢谢哥 我可能等级太低了不让我下载哈哈哈哈哈 直接说我次数不够了