高精度

使用高精度的步骤:

  1. 利用string进行读入
  2. 将string存入数组中,数字的低位放在数组的前面,高位放在数组后面
  3. 利用数组进行运算
  4. 输出结果

  5. 代码如下:
        a[0]=x.size();
     for(int i=1;i<=a[0];i++){
     	a[i]=x[a[0]-i]-'0';
     } 
     b[0]=y.size();
     for(int i=1;i<=b[0];i++){
     	b[i]=y[b[0]-i]-'0';
     } 
     
    

代码:

#include<iostream>
using namespace std;
string x,y;
int a[10000],b[10000],c[100000];
int main(){
    cin>>x>>y;
    /* s1->a */
    /*低位放在下标少的*/
    a[0]=x.size();
    for(int i=1;i<=a[0];i++){
    	a[i]=x[a[0]-i]-'0';
	} 
    b[0]=y.size();
    for(int i=1;i<=b[0];i++){
    	b[i]=y[b[0]-i]-'0';
	} 
	int l=max(a[0],b[0]),len=0;
	for(int i=1;i<=l;i++){
		c[i]+=a[i]+b[i];
		len=max(len,i);
		if(c[i]>=10){
			c[i]-=10;
			c[i+1]++;
			len=i+1;
		}
	}
	for(int i=len;i>=1;i--) cout<<c[i];
    return 0;
}

老师的代码(其实差不多):

#include<iostream>
using namespace std;
string x,y;
int a[10000],b[10000],c[100000];
int main(){
    cin>>x>>y;
    a[0]=x.size(),b[0]=y.size();
    for(int i=1;i<=a[0];i++) a[i]=x[a[0]-i]-'0'; 
    for(int i=1;i<=b[0];i++) b[i]=y[b[0]-i]-'0'; 
	int l=max(a[0],b[0]),len=0;
	for(int i=1;i<=l;i++){
		if(a[i]<b[i]) a[i]+=10,a[i+1]--;
		c[i]=a[i]-b[i]; 
	}
	while(l>0&&c[l]==0) l--;
	for(int i=l;i>=1;i--) cout<<c[i];
    return 0;
}

课后测:

赞赏