4.高精度计算
原题链接:102636.4.高精度计算2026-02-05 16:03:33
发布于:江苏
高精度加法:
int len1=s1.size(),len2=s2.size();
for(int i=0;i<len1;i++){
a[i]=s1[len1-i-1]-48;
}
for(int i=0;i<len2;i++){
b[i]=s2[len2-i-1]-48;
}
int len=max(len1,len2)-1;
for(int i=0;i<=len;i++){
c[i]+=a[i]+b[i];
if(c[i]>=10) {
c[i]%=10;
c[i+1]++;
}
}
if(c[len+1]) len++;
for(int i=len;i>=0;i--){
cout<<c[i];
}
高精度减法:
int len1=s1.size(),len2=s2.size();
if(len1==len2 && s1<s2 || len1<len2){
swap(s1,s2);
swap(len1,len2);
cout<<"-";
}
for(int i=0;i<len1;i++) a[i]=s1[len1-i-1]-48;
for(int i=0;i<len2;i++) b[i]=s2[len2-i-1]-48;
for(int i=0;i<len1;i++){
c[i]+=a[i]-b[i];
if(c[i]<0) {
c[i]+=10;
c[i+1]--;
}
}
int x=len1-1;
while(c[x]==0 && x>0) x--;
for(int i=x;i>=0;i--) cout<<c[i];
高精度乘法:
int len1=s1.size(),len2=s2.size();
for(int i=0;i<len1;i++){
a[i]=s1[len1-i-1]-48;
}
for(int i=0;i<len2;i++){
b[i]=s2[len2-i-1]-48;
}
for(int i=0;i<len2;i++){
for(int j=0;j<len1;j++){
c[i+j]+=a[j]*b[i];
c[i+j+1]+=c[i+j]/10;
c[i+j]%=10;
}
}
int len=len1+len2;
while(!c[len]) len--;
for(int i=len;i>=0;i--){
cout<<c[i];
}
高精度除法:
cin>>s1>>b;
int l1=s1.size();
for(int i=0;i<l1;i++){
a[i]=s1[i]-'0';
}
long long r=0;
for(int i=0;i<l1;i++){
r=a[i]+r*10;
c[i]=r/b;
r%=b;
}
int len=0;
while(!c[len] && len<l1-1){
len++;
}
for(int i=len;i<l1;i++){
cout<<c[i];
}
cout<<endl<<r;
全部评论 1
!!!
2026-04-30 来自 江苏
0

























有帮助,赞一个