高精度加,减,乘
2024-11-01 17:36:24
发布于:北京
//高精度加法代码 
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N],c[N];
int main(){
	string s1,s2;
	cin>>s1>>s2;
	int l1=s1.size(),l2=s2.size();
	int len=max(l1,l2);
	for(int i=0;i<l1;i++){
		a[i]=s1[l1-i-1]-'0';
	}
	for(int i=0;i<l2;i++){
		b[i]=s2[l2-i-1]-'0';
	}
    int l3=max(l1,l2);
	for(int i=0;i<len;i++){
		c[i]+=a[i]+b[i];
		if(c[i]>=10){
			c[i+1]=c[i]/10;
			c[i]%=10;
		}
	}
    if(c[l3]>0){
        l3++;
    }
    for(int i=l3-1;i>=0;i--){
    	cout<<c[i];
	}
	return 0;
}
//高精度减法代码 
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N],c[N];
bool cmp(string s1,string s2){
    if(s1.size()<s2.size()){
        return true;
    }else if(s1.size()>s2.size()){
        return false;
    }
    return s1<s2;
}
int main(){
	string s1,s2;
	cin>>s1>>s2;
    if(cmp(s1,s2)){
        swap(s1,s2);
        cout<<"-";
    }
	int l1=s1.size(),l2=s2.size();
	int len=min(l1,l2);
	for(int i=0;i<l1;i++){
		a[i]=s1[l1-i-1]-'0';
	}
	for(int i=0;i<l2;i++){
		b[i]=s2[l2-i-1]-'0';
	}
    int l3=l1;
	for(int i=0;i<l3;i++){
		if(a[i]<b[i]){
			a[i]+=10;
			a[i+1]--;
		}
        c[i]=a[i]-b[i];
	}
    while(l3>1 && c[l3-1]==0){
        l3--;
    }
    for(int i=l3-1;i>=0;i--){
    	cout<<c[i];
	}
	return 0;
}
//高精度乘法代码
 #include <bits/stdc++.h>
using namespace std;
const int N=2e3+9;
int a[N],b[N],c[N];
int main(){
	string s1,s2;
	cin>>s1>>s2;
	int l1=s1.size(),l2=s2.size();
    for(int i=0;i<l1;i++){
		a[i]=s1[l1-i-1]-'0';
	}
	for(int i=0;i<l2;i++){
		b[i]=s2[l2-i-1]-'0';
	}
	for(int i=0;i<l1;i++){
        for(int j=0;j<l2;j++){
			c[i+j]+=a[i]*b[j];
            c[i+j+1]+=c[i+j]/10;
			c[i+j]%=10;
		}
	}
    int l3=l1+l2;
    while(c[l3-1]==0 && l3>1){
        l3--;
    }
    for(int i=l3-1;i>=0;i--){
        cout<<c[i];
    }
	return 0;
}
//高精度乘低精度代码 
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int a[N],b[N];
int main(){
	string s;
    int c;
	cin>>s>>c;
	int l1=s.size();
	for(int i=0;i<l1;i++){
		a[i]=s[l1-i-1]-'0';
	}
	for(int i=0;i<l1;i++){
		b[i]+=a[i]*c;
		if(b[i]>=10){
			b[i+1]=b[i]/10;
			b[i]%=10;
		}
	}
    int l2=l1;
    while(b[l2]>0){
        b[l2+1]+=b[l2]/10;
        b[l2]%=10;
        l2++;
    }
    for(int i=l2-1;i>=0;i--){
        cout<<b[i];
    }
	return 0;
}
全部评论 2
- 顶 - 2024-08-13 来自 北京 0
- 顶 - 2024-08-13 来自 北京 0









有帮助,赞一个