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

全部评论
你的程序可能在以下样例会出问题 in: 1 333 333 standard out: 110889
1 回复 分享
发布于 2024-07-24 18:52 河南

相关推荐

03-26 22:55
门头沟学院 Java
烤冷面在迎接:河南byd,应该就是郑大了。不过24届计算机是特殊情况,那年除了九✌和强2,以及两三个关系够硬的双非,其他的都是炮灰,感觉是十几年来互联网行业最烂的一年,如果想了解最新的就业情况,得找现在的大四。
点赞 评论 收藏
分享
05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务