社区讨论

无输出,求调

灌水区参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m67nezhh
此快照首次捕获于
2025/01/22 16:34
去年
此快照最后确认于
2025/11/04 11:01
4 个月前
查看原帖
高精度:两个小数相加,整数,小数部分都在两百位之内
CPP
#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;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...