help
查看原帖
help
1368288
100Accepted楼主2024/8/29 13:15

P1945
90分
错误:#12,#19
#12:Wrong Answer.wrong answer On line 1 column 1, read 0, expected 5.
#19:Wrong Answer.wrong answer On line 1 column 1, read 0, expected 3.
code:

#include<cstring>
#include<iostream>
using namespace std;
string r,c,d;
int x[10000],y[10000],z[10000],cz[10000],z2[10000];
int lenr,lenc,i,j,zx=0,lena,lenb,lenz,lencz,lenz2;
bool big(string a,string b){
	lenr=a.length();
	lenc=b.length();
	if(lenr>lenc)return 1;
	if(lenr<lenc)return 0;
	for(i=0;i<lenr;i++){
		if(a[i]>b[i])return 1;
		if(a[i]<b[i])return 0;
	}
	return 1;
}
void jd(int a[],int b[],int lena,int lenb){
	for(i=lena+lenb;i>=0;i--)z[i]=0;
	for(i=1;i<=lena;i++){
		zx=0;
		for(j=1;j<=lenb;j++){
			z[i+j-1]=a[i]*b[j]+zx+z[i+j-1];
			zx=z[i+j-1]/10;
			z[i+j-1]%=10;
		}
		z[i+lenb]=zx;
	}
	lenz=lena+lenb;
	while(z[lenz]==0&&lenz>1)lenz--;
}
void cf(int a[],int b,int lena){
	for(i=lena;i>=0;i--)z2[i]=0;zx=0;
	for(i=lena;i>=1;i--){
		z2[i]=zx*10+a[i];
		zx=z2[i]%b;
		z2[i]/=b;
	}
	lenz2=lena;
	while(z2[lenz2]==0&&lenz2>1)lenz2--;
}
void jf(int a[],int b[],int lena,int lenb){
	for(i=max(lena,lenb);i>=0;i--)cz[i]=0;
	i=1;
	while(i<=lena||i<=lenb){
		if(a[i]<b[i]){
			a[i]+=10;
			a[i+1]--;
		}
		cz[i]=a[i]-b[i];
		i++;
	}
	lencz=i;
	while(cz[lencz]==0&&lencz>1)lencz--;
	cz[1]++;i=1;
	while(cz[i]>=10){
		zx=cz[i]/10;
		cz[i]%=10;
		i++;
		cz[i]+=zx;
	}
}
int main(){
	cin>>r>>c;
	if(!big(r,c)){
		d=r;r=c;c=d;
	}
	lenr=r.length();
	lenc=c.length();
	for(i=1;i<=lenc;i++){
		x[i]=c[lenc-i]-'0';
		cz[i]=x[i];
	}
	for(i=1;i<=lenr;i++){
		y[i]=(r[lenr-i]-'0')*2+zx;
		zx=y[i]/10;
		y[i]%=10;
	}
	if(zx==1)y[i]=1,lenr++;
	lena=lenb=lenc;cz[1]++;i=1;
	while(cz[i]>=10&&i<=lenb){
		zx=cz[i]/10;
		cz[i]%=10;
		i++;
		cz[i]+=zx;
	}
	if(i==lenb+1)cz[i]=1,lenb++;
	jd(x,cz,lena,lenb);
	cz[1]++;i=1;
	while(cz[i]>=10&&i<=lenb){
		zx=cz[i]/10;
		cz[i]%=10;
		i++;
		cz[i]+=zx;
	}
	if(i==lenb+1)cz[i]=1,lenb++;
	for(i=0;i<=lenz;i++)z2[i]=z[i];
	jd(z2,cz,lenz,lenb);
	jf(y,x,lenr,lenc);
	for(i=0;i<=lenz;i++)z2[i]=z[i];
	jd(z2,cz,lenz,lencz);
	cf(z,12,lenz);
	for(i=lenz2;i>=1;i--){
		printf("%d",z2[i]);
	}
	printf(" 0");
    return 0;
}
2024/8/29 13:15
加载中...