C++神犇救救路边可怜孩子
查看原帖
C++神犇救救路边可怜孩子
1172677
___ZHY楼主2025/6/14 09:22

70分

WA on #2 #7 #10

/*
高精度剑法

一 建立字符串a,b,整型数组x,y,z[114514],整形变量len1,len2,len
a:被减数
b:减数
x,y,z:倒序存数 
c:结果
len1:被减数的长度
len2:减数的长度
二 输入,判断a是否小于b
	先判断长度
	在判断字典序 
如是,交换a,b,输出'-' 
判断a是否等于b
如是,输出0
三 计算len1,len2 
四 倒序存数
五 遍历x,y
	若x,y数组第i位与t的和为0,停止循环
	z数组第i位=x,y数组第i位与t的和为0
	如z数组第i位小于零:
		z数组第i位的后一位--
		z数组第i位+=10 
	如z数组第i位不等于零:
	    len=i
六 从第len位开始倒序输出z数组
*/ 
#include<bits/stdc++.h>
using namespace std;
string a,b;
int x[114514],y[114514],z[114514],len1,len2,len;
int main(){
	cin>>a>>b;
	if(a.size()<b.size()||a>b){
		cout<<'-';
		swap(a,b);
	}
	else if(a==b){
		cout<<0;
		return 0;
	}
	len1=a.size();
	len2=b.size();
	for(int i=len1-1;i>=0;i--){
		x[len1-i]=a[i]-'0';
	}
	for(int i=len2-1;i>=0;i--){
		y[len2-i]=b[i]-'0';
	}
	for(int i=1;i<=len1;i++){
		z[i]+=x[i]-y[i];
		
		if(z[i]<0){
			z[i+1]--;;
			z[i]+=10;
		}
		if(z[i]!=0) len=i;
	}
	for(int i=len;i>0;i--){
		cout<<z[i];
	}
	return 0;
} 
2025/6/14 09:22
加载中...