写了个高精减,不知道为什么出了问题
  • 板块学术版
  • 楼主Waller
  • 当前回复5
  • 已保存回复5
  • 发布时间2022/7/22 19:11
  • 上次更新2023/10/27 18:52:45
查看原帖
写了个高精减,不知道为什么出了问题
725799
Waller楼主2022/7/22 19:11
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int a[501],b[501],c[501],lena,lenb,lenc;
	char a1[501],b1[501];
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(a,0,sizeof(c));
	gets(a1);
	gets(b1);
	lena = strlen(a1);
	lenb = strlen(b1);
	if(lena < lenb || (lena == lenb && strcmp(a1,b1) < 0))
	{
		char n[501];
		strcpy(n,a1);
		strcpy(a1,b1);
		strcpy(b1,n);
		cout << '-';
	}
	for(int i=0;i<=lena;i++) a[lena-i] = int(a1[i])- 48;
	for(int i=0;i<=lenb;i++) b[lenb-i] = int(b1[i])- 48;
	int i = 1;
	while(i <= lena || i<= lenb)
	{
		while(a[i]<b[i])
		{
			a[i] += 10;
			a[i+1]--;
		}
		c[i] = a[i]+b[i];
		i++;
	}
	lenc = i;
	while((c[lenc]==0)&&(lenc>1)) lenc--;
	for(int i=lenc;i>=1;i--) cout << c[i];
	return 0;
}

然后……

输入:

1
2

输出:

-703

不知道错在哪里,我对差为负数情况做了特判的,为什么会出现这种情况

2022/7/22 19:11
加载中...