有大佬知道为什么这个高精在VS上能跑,提交之后却是错误的
  • 板块学术版
  • 楼主B21010830
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/12/13 22:00
  • 上次更新2023/10/29 15:48:04
查看原帖
有大佬知道为什么这个高精在VS上能跑,提交之后却是错误的
589468
B21010830楼主2021/12/13 22:00
char arr[500000000] = { 0 };//数组一
char arr2[50000000] = { 0 };//数组二
char mm[500000000] = { 0 };//存放答案
int move()//使得数字排序变为从后先前
{
	int i=0;
	i = strlen(arr);
	int right = --i;
	int left = 0;
	int temp;
	while (right > left)
	{
		temp = arr[right];
		arr[right]= arr[left];
		arr[left] = temp;
		right--;
		left++;
	}
}
void move2()
{
	int i=0;
	i = strlen(arr2);
	int right = --i;
	int left = 0;
	int temp;
	while (right > left)
	{
		temp = arr2[right];
		arr2[right] = arr2[left];
		arr2[left] = temp;
		right--;
		left++;
	}
}
int main()
{
	int a = 0;
	int i=0;
	gets(arr);
	gets(arr2);
	move();
	move2();
	for (;arr[i]!='\0'||arr2[i]!='\0';i++)
	{
		if(arr[i] != '\0' && arr2[i] != '\0')//分两种情况讨论,数组只有一个有数子或者两个都有
		a += (int)arr[i] + (int)arr2[i] - 48 * 2;
		else
			a += (int)arr[i] + (int)arr2[i] - 48;
		if (a / 10 > 0)//考虑是否进一
		{
			mm[i] += a % 10;
			a /= 10;
			mm[i + 1] += a;
			if (mm[i + 1] > 9)
			{
				mm[i + 2] += mm[i + 1] / 10;
				mm[i + 1] -= 10;
			}
			a = 0;
		}
		else
		{
			mm[i] += a;
			if (mm[i] > 9)
			{
				mm[i + 1] += mm[i] / 10;
				mm[i] -= 10;
			}
			a = 0;
		}
	}
	if (mm[i] == 0)//处理数字防止由于i加一后进行输出0
		i--;
	for (;i >= 0;i--)
	{
			printf("%d",(int)mm[i]);
	}
	return 0;
}
2021/12/13 22:00
加载中...