无输出,求调
  • 板块灌水区
  • 楼主CAMpizza
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/1/22 16:33
  • 上次更新2025/1/22 19:39:07
查看原帖
无输出,求调
1381797
CAMpizza楼主2025/1/22 16:33

高精度:两个小数相加,整数,小数部分都在两百位之内

#include<bits/stdc++.h>
using namespace std;
int k=0,la,lax,lb,lbx;
char a[201],ax[201],b[201],bx[201],ch;
int main(){
	scanf("%c",ch);
	while(ch!='.'){
		a[k++]=ch-'0';
		scanf("%c",ch);
	}
	reverse(a,a+k);
	la=k;
	k=0;
	
	scanf("%c",ch);
	while(ch!='\n'){
		ax[k++]=ch-'0';
		scanf("%c",ch);
	}
	lax=k;
	k=0;
	
	scanf("%c",ch);
	while(ch!='.'){
		b[k++]=ch-'0';
		scanf("%c",ch);
	}
	reverse(b,b+k);
	lb=k;
	k=0;
	
	scanf("%c",&ch);
	while(ch!='\n'){
		bx[k++]=ch-'0';
		scanf("%c",ch);
	}
	lbx=k;
	k=0;

	for(int i=max(la,lb)-1;i>=0;i--){
		a[i]+=b[i];
		if(a[i]>9)a[i-1]++;
		a[i]%=10;
	}
	ax[1]+=bx[1];
	if(ax[1]>9)a[max(la,lb)]++;
	ax[1]%=10;
	
	for(int i=2;i<=max(lax,lbx);i++){
		ax[i]+=bx[i];
		if(ax[i]>9)ax[i-1]++;
		ax[i]%=10;
	} 
	cout<<a;
	cout<<".";
	cout<<ax;
	return 0;
}
2025/1/22 16:33
加载中...