对了,但没完全对
查看原帖
对了,但没完全对
1121020
sikongzhen楼主2024/4/21 09:37
#include<bits/stdc++.h>
using namespace std;

const int MAXN = 10086;
#define dou double
#define ll long long int

int a[MAXN],b[MAXN],ans[MAXN];
 
int main()
{
	string s1,s2;
	getline(cin,s1);
	getline(cin,s2);
	
	//处理长度
	ll len1 = s1.length();
	ll len2 = s2.length();
	
	//判断答案符号
	bool flag = (len1<len2) || (len1==len2)&&(s1<s2);
	if(flag)
	{
		swap(s1,s2);
		swap(len1,len2);
	} 
	
	//逆序存入
	for(int i=0;i<len1;i++)
	{
		a[len1-i-1] = s1[i]-'0';
	} 
	for(int i=0;i<len2;i++)
	{
		b[len2-i-1] = s2[i]-'0';
	} 
	
	//进行减法 
	for(int i=0;i<len1;i++)
	{
		if(a[i]<b[i])
		{
			a[i+1]--;
			a[i] += 10;
		}
		ans[i] = a[i] - b[i];
	}
	
	//判断位数,去除前导0 
	int h = len1-1;
	while(ans[h]==0 && h>=1) h--;
	
	if(flag) printf("-");
	for(int i=h;i>=0;i--)
	{
		printf("%d",ans[i]);
	}
	return 0;
}

洛谷编译器逆天bug,测试点全对,但是一片WA,求助

2024/4/21 09:37
加载中...