31 条题解
-
0
string cheng(string n,string m) { string k=""; int *a,*b,*f,la=n.size(),lb=m.size(),lf=la+lb; a=new int[la+1]; b=new int[lb+1]; f=new int[lf+1]; for(int i=1;i<=la;i++) a[i]=0; for(int i=1;i<=lb;i++) b[i]=0; for(int i=1;i<=lf;i++) f[i]=0; for(int i=la-1;i>=0;i--) a[la-i]=n[i]-'0'; for(int i=lb-1;i>=0;i--) b[lb-i]=m[i]-'0'; for(int i=1;i<=la;i++) for(int j=1;j<=lb;j++) f[i+j-1]+=a[i]*b[j]; for(int i=1;i<=lf;i++) { f[i+1]+=f[i]/10; f[i]%=10; } while(f[lf]==0&&lf>1) lf--; for(int i=lf;i>=1;i--) k=k+char(f[i]+'0'); return k; } string jia(string n,string m) { string k=""; int *f,*a,*b,la=n.size(),lb=m.size(),lf=max(la,lb)+1; a=new int[lf+1]; b=new int[lf+1]; f=new int[lf+1]; for(int i=1;i<=lf;i++) a[i]=0; for(int i=1;i<=lf;i++) b[i]=0; for(int i=1;i<=lf;i++) f[i]=0; for(int i=1;i<=la;i++) a[i]=n[la-i]-'0'; for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0'; for(int i=1;i<=lf;i++) { f[i]+=a[i]+b[i]; if(f[i]>=10) { f[i]-=10; f[i+1]++; } } if(f[lf]==0) lf--; for(int i=lf;i>=1;i--) k=k+char(f[i]+'0'); return k; } string jian(string n,string m) { string k=""; int *a,*b,*f,la=n.size(),lb=m.size(),lf; if(lb>la||la==lb&&n<m) { swap(n,m); swap(la,lb); cout<<'-'; } lf=la; a=new int[lf+1]; b=new int[lf+1]; f=new int[lf+1]; for(int i=1;i<=lf;i++) a[i]=0; for(int i=1;i<=lf;i++) b[i]=0; for(int i=1;i<=lf;i++) f[i]=0; for(int i=1;i<=la;i++) a[i]=n[la-i]-'0'; for(int i=1;i<=lb;i++) b[i]=m[lb-i]-'0'; for(int i=1;i<=lf;i++) { if(a[i]<b[i]) { a[i+1]--; a[i]+=10; } f[i]=a[i]-b[i]; } while(f[lf]==0&&lf>1) lf--; for(int i=lf;i>=1;i--) k=k+char(f[i]+'0'); return k; } string h(string n,char w,string m) { if(w=='+') return jia(n,m); if(w=='*') return cheng(n,m); if(w=='-') return jian(n,m); }
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 526
- 已通过
- 278
- 上传者