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