d过92%
不知道哪里wa了!
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
typedef long long LL;
#define pb push_back
const int N = 1e5+10;
#define endl '\n'
vector<int> mul(vector<int> &A, int b){
vector<int> C;
int t = 0;
for (int i = 0; i < A.size() || t; i ++ ){
if (i < A.size()) t += A[i] * b;
C.push_back(t % 10);
t /= 10;
}
while (C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
inline void solve(){
string aa , bb ; cin >> aa >> bb ;
int n = aa.size() , m = bb.size() ;
vector<int> a(n);
int b = bb[0]-'0' ;
bool tag = false ;
for(int i=n-1;i>=0;i--) {
a[n-i-1] = aa[i]-'0';
if(aa[i]!='0') tag = true ;
}
if(b==0 || !tag){
cout << 0 << endl;
return ;
}
vector<int> c = mul(a,b) ;
n = c.size() ;
vector<int> ps(n+1,0);
for(int i=1;i<=n;i++) ps[i] = ps[i-1] + c[i-1] ;
vector<int> res;
int j = 0 ;
if(m<n){
for(int i=1;i<=n;i++){
int f = i ;// 数的个数
if(f>m) f = m ;
j += ps[i]-ps[i-f] ;
res.pb(j%10) ;
j /= 10 ;
}
for(int i=2;i<=m;i++){//枚举层数
int f = m-i+1 ;// 数的个数
j+= ps[n]-ps[n-f];
res.pb(j%10) ;
j/=10;
}
}else{
int j = 0 ;
for(int i=1;i<=n;i++){
j+=ps[i] ;
res.pb(j%10) ;
j/=10 ;
}
for(int i=1;i<=m-n;i++){
j+=ps[n];
res.pb(j%10) ;
j/=10 ;
}
for(int i=1;i<n;i++){
j+=ps[n]-ps[i];
res.pb(j%10) ;
j/=10;
}
}
if(j) cout << j ;
reverse(res.begin(),res.end()) ;
for(int x : res) cout << x ;
cout << endl ;
}
signed main(){
IOS
int _ = 1;
cin >> _;
while(_ --) solve();
return 0;
}
