只过了第一个点,其他都是wa,有没有大佬来个特殊点
  • 板块P1303 A*B Problem
  • 楼主LucyLyn
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/28 01:30
  • 上次更新2023/11/3 00:47:36
查看原帖
只过了第一个点,其他都是wa,有没有大佬来个特殊点
527577
LucyLyn楼主2023/8/28 01:30
#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];
	}
}
2023/8/28 01:30
加载中...