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; }