社区讨论

20,小减大不对

P2142高精度减法参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhjuumi8
此快照首次捕获于
2025/11/04 08:53
4 个月前
此快照最后确认于
2025/11/04 08:53
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
char a[1000000],b[1000000];int c[1000000],d[1000000],e[1000000],f;bool j;
int main(){
	cin>>a>>b;
	
	
	for(int i=strlen(a)-1;i>=0;i--){
		c[strlen(a)-i-1]=a[i]-48;
	}for(int i=strlen(b)-1;i>=0;i--){
			d[strlen(b)-i-1]=b[i]-48;
		
	}if(strlen(a)>=strlen(b)||(strlen(a)==strlen(b)&&a>b)){
	for(int i=0;i<=max(strlen(a),strlen(b));i++){
		if(c[i]-d[i]>-1){
			e[i]=c[i]-d[i]+f;
			f=0
	;} else{
			e[i]=c[i]+10-d[i]+f;
			f=-1;
		}
		
	}
	for(int i=max(strlen(a),strlen(b));i>=0;i--){
		if(e[i]==0&&j==0&&i!=0){
			continue;
		}else{
		j=1;	
		}
		cout<<e[i];
	}}
	
	else{
	cout<<"-";
	
		for(int i=strlen(a)-1;i>=0;i--){
		c[strlen(a)-i-1]=a[i]-48;
	}for(int i=strlen(b)-1;i>=0;i--){
			d[strlen(b)-i-1]=b[i]-48;
		
	}
	for(int i=0;i<=max(strlen(a),strlen(b));i++){
		if(d[i]-c[i]>-1){
			e[i]=d[i]-c[i]+f;
			f=0;
			
	} else{
			e[i]=d[i]+10-c[i]+f;
			f=-1;
		}
		
	}
	
	for(int i=max(strlen(a),strlen(b));i>=0;i--){
		if(e[i]==0&&j==0&&i!=0){
			continue;
		}else{
		j=1;	
		}
		cout<<e[i];
	}}
		}

回复

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

正在加载回复...