下载了第一个输入,结果和输出一样,但就是过不了,为什么啊
查看原帖
下载了第一个输入,结果和输出一样,但就是过不了,为什么啊
1106794
fulante楼主2023/10/21 20:59
#include <stdio.h>
int min(int a, int b)
{
	if (a > b) return b;
	else return a;
}

int main()
{
	char a[510], b[510];
	int lena = 0, lenb = 0, len;
	int c[510] = {0};
	int i = 1;
	scanf("%c", &a[1]);
	while(a[i] != '\n')
	{
		scanf("%c", &a[i + 1]);
		lena++;
		i++;
	}
	i = 1;
	scanf("%c", &b[1]);
	while(b[i] != '\n')
	{
		scanf("%c", &b[i + 1]);
		lenb++;
		i++;
	}
	len  = min(lena, lenb);
	for (i = 0; i < len; i++)
	{
		c[i + 1] = a[lena - i] +b[lenb - i] - 2 * '0';
	}
	for(i = 1; i < len; i++)
	{
		if (c[i] > 9) 
		{
			c[i] %= 10;
			c[i + 1]++;
		}
	}
	if (c[len] > 9)
	{
		if (lena > lenb) 
		{
			c[len] %= 10;
			c[len + 1]++;
			for (i = len + 1; i <= lena; i++)
			{
				c[i] += a[i] - '0';
				if(c[i] > 9) 
				{
					c[i] %= 10;
					c[i + 1]++;
				}
			}
			if(c[lena + 1]) printf("%d", c[lena + 1]);
			for (i = lena; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
		else if (lena < lenb)
		{
			c[len] %= 10;
			c[len + 1]++;
			for (i = len + 1; i <= lenb; i++)
			{
				c[i] += b[i] - '0';
				if(c[i] > 9) 
				{
					c[i] %= 10;
					c[i + 1]++;
				}
			}
			if(c[lenb + 1]) printf("%d", c[lenb + 1]);
			for (i = lenb; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
		else
		{
			c[len] %= 10;
			c[len + 1]++;
			for (i = len + 1; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
	}
	else
	{
		if (lena > lenb) 
		{
			for (i = len + 1; i <= lena; i++)
			{
				c[i] = a[i] - '0';
			}
			for (i = lena; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
		else if (lena < lenb)
		{
			for (i = len + 1; i <= lenb; i++)
			{
				c[i] = b[i] - '0';
			}
			for (i = lenb; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
		else
		{
			if (c[len + 1] != 0) printf("%d", c[len + 1]);
			for (i = len; i >= 1; i--)
			{
				printf("%d", c[i]);
			}
		}
	}
}
2023/10/21 20:59
加载中...