25 条题解
-
0
快来看我的高精度函数!
兼带高精加、高精减、高精乘!!!
不过大佬被喷,高精除我没写哟。
string cheng(string n,string m) { string k=""; int a[10010],b[10010],f[10010]; int la=n.size(),lb=m.size(),lf=la+lb; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); 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) { int f[10010],a[10010],b[10010]; string t=""; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); int a1=n.size(),a2=m.size(),a3=max(a1,a2)+1; for(int i=1;i<=a1;i++) a[i]=n[a1-i]-'0'; for(int i=1;i<=a2;i++) b[i]=m[a2-i]-'0'; for(int i=1;i<=a3;i++) { f[i]+=a[i]+b[i]; if(f[i]>=10) { f[i]-=10; f[i+1]++; } } if(f[a3]==0) a3--; for(int i=a3;i>=1;i--) t=t+char(f[i]+'0'); return t; } string jian(string n,string m) { int a[10010],b[10010],f[10010],la=n.size(),lb=m.size(),lf; string k=""; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(f,0,sizeof(f)); if(lb>la||la==lb&&n<m) { swap(n,m); swap(la,lb); cout<<'-'; } lf=la; 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 dfs(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
- 难度
- 4
- 标签
- (无)
- 递交数
- 427
- 已通过
- 209
- 上传者