求助
  • 板块灌水区
  • 楼主LeoLiu_2011
  • 当前回复11
  • 已保存回复11
  • 发布时间2023/7/7 15:09
  • 上次更新2023/11/3 11:11:45
查看原帖
求助
755298
LeoLiu_2011楼主2023/7/7 15:09

本蒟蒻高精减法只能过40分

: (

#include<bits/stdc++.h>
using namespace std;
char in1[10090],in2[10090],in[10090];
short num1[10090],num2[10090],ans[10090];
int main(){
	memset(num1,0,sizeof(num1));
	memset(num2,0,sizeof(num2));
	memset(ans,0,sizeof(ans));
	memset(in1,0,sizeof(in1));
	memset(in2,0,sizeof(in2));
	cin>>in1>>in2;
	if(strlen(in1)<strlen(in2)||strlen(in1)==strlen(in2)&&strcmp(in1,in2)<0){
		strcpy(in,in1);
		strcpy(in1,in2);
		strcpy(in2,in);
		cout<<"-";
	}
	
	int len1=strlen(in1);
	int len2=strlen(in2);
	for(int i=0;i<=len1-1;i++){
		num1[len1-i]=int(in1[i]-'0');
	}
	for(int i=0;i<=len2-1;i++){
		num2[len2-i]=int(in2[i]-'0');
	}
	
	
	int i=1;
	while(i<=len1 || i<=len2){
		if(num1[i]<num2[i]){
			num1[i]+=10;
			num1[i+1]--;
		}
		ans[i]=num1[i]-num2[i];
		i++;
	}
	bool check=0;
	int j;
	for(j=1000;j>=1;j--){
		if(!check&&ans[j]!=0){
			check=true;
			cout<<ans[j];
		}else if(check){
			cout<<ans[j];
		}
	}
	if(!check){
		cout<<0;
	}
	return 0;
}

有没有大神能解答一下....

2023/7/7 15:09
加载中...