help!
查看原帖
help!
1281623
Problem1613end楼主2024/8/26 22:32

95 分

#include<bits/stdc++.h>
using namespace std;
#define ll long long
string r,c;
ll s1[100100],s2[100100],s3[100100],s4[100100],ans[100100],s5[100100];
ll w1,w2,w3,w4,w5,w6;
void cf(){
	ll dq=0;
	for(int i=w5;i>=1;i--){
		dq*=10;
		dq+=s5[i];
		if(dq>=12){
			ans[i]=dq/12;
		}
		dq%=12;
	}
	return;
}
bool big(string at,string bt){
	int a=at.length();
	int b=bt.length();
	if(a>b) return true;
	if(b<a) return false;
	for(int i=0;i<a;i++){
		if(at[i]>bt[i]) return true;
		else if(bt[i]>at[i]) return false;
	}
	return false;
}
void print(){
	w6=w5;
	while(1){
		if(ans[w6]==0){
			w6--;
		}
		else break;
	}
	for(int i=w6;i>=1;i--){
		cout<<ans[i];
	}
	cout<<" "<<0;
	return;
}
void cl(){
	for(int i=1;i<=w6;i++){
		if(ans[i]>=10){
			ans[i+1]=(ans[i]/10)+ans[i+1];
			if(i==w6) w6++;
			ans[i]%=10;
		}
	}
}
void cop(){
	w5=w6;
	for(int i=1;i<=w6;i++){
		s5[i]=ans[i];
		ans[i]=0;
	}
}
void an1(){
	w5=w1;
	for(int i=1;i<=w1;i++){
		s5[i]=s1[i];
	}
	for(int i=1;i<=w5;i++){
		for(int j=1;j<=w2;j++){
			ans[i+j-1]=ans[i+j-1]+(s2[j]*s5[i]);
		}
	}
	w6=w5+w1+1000;
	cl();
	cop();
	for(int i=1;i<=w5;i++){
		for(int j=1;j<=w3;j++){
			ans[i+j-1]=ans[i+j-1]+(s3[j]*s5[i]);
		}
	}
	w6=w5+w3+1000;
	cl();
	cop();
	for(int i=1;i<=w5;i++){
		for(int j=1;j<=w4;j++){
			ans[i+j-1]=ans[i+j-1]+(s4[j]*s5[i]);
		}
	}
	w6=w5+w4+1000;
	cl();
	cop();
}
void cl2(){
	for(int i=1;i<=w2;i++){
		if(s2[i]>=10){
			s2[i+1]=(s2[i]/10)+s2[i+1];
			if(i==w2) w2++;
			s2[i]%=10;
		}
	}
}
void cl3(){
	for(int i=1;i<=w3;i++){
		if(s3[i]>=10){
			s3[i+1]=(s3[i]/10)+s3[i+1];
			if(i==w3) w3++;
			s3[i]%=10;
		}
	}
}
void cl4(){
	for(int i=1;i<=w4;i++){
		if(s4[i]>=10){
			s4[i+1]=(s4[i]/10)+s4[i+1];
			if(i==w4) w4++;
			s4[i]%=10;
		}
	}
}
void fcl4(){
	for(int i=1;i<=w4;i++){
		if(s4[i]<0){
			s4[i+1]=s4[i+1]-(abs(s4[i])/10);
			if(abs(s4[i])%10==0){
				s4[i]=0;
			}
			else{
				s4[i+1]--;
				s4[i]=s4[i]+((abs(s4[i])/10)*10)+10;
			}
		}	
	}
}
int main(){
	cin>>r>>c;
	if(big(c,r)) swap(r,c);
	w1=c.length();
	for(int i=0;i<w1;i++){
		s1[i+1]=c[w1-i-1]-'0';
		s2[i+1]=c[w1-i-1]-'0';
		s3[i+1]=c[w1-i-1]-'0';
	}
	s2[1]++;
	s3[1]++;
	s3[1]++;
	w4=r.length();
	for(int i=0;i<w4;i++){
		s4[i+1]=(r[w4-i-1]-'0')*2;
	}
	w2=c.length();
	w3=c.length();
	cl2();
	cl3();
	cl4();
	/*for(int i=w1;i>=1;i--){////////////////////////
		cout<<s1[i];
	}
	cout<<endl;
	for(int i=w2;i>=1;i--){
		cout<<s2[i];
	}
	cout<<endl;
	for(int i=w3;i>=1;i--){/////////////////////
		cout<<s3[i];
	}
	cout<<endl;*/
	//for(int i=w4;i>=1;i--){
	//	cout<<s4[i];
	//}
	//cout<<endl;
	for(int i=1;i<=w1;i++){
		s4[i]-=s1[i];
		//for(int i=w4;i>=1;i--){
		//	cout<<s4[i]<<" ";
		//}
		///cout<<endl;
	}
	fcl4();
	s4[1]++;
	cl4();
	//for(int i=w4;i>=1;i--){
	//	cout<<s4[i];
	//}
	//cout<<endl;
	an1();
	cf();
	print();
	return 0;
}
2024/8/26 22:32
加载中...