⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1886900_ac_0ms_104k.c

📁 北大大牛代码 1240道题的原代码 超级权威
💻 C
字号:
# include <stdio.h>
# include <string.h>

int lenl, lens;
char l[20000], s[20000], tmp[20000];

void add()
{
	int i;
	char t, y;

	y = '0';
	for(i = 0; i <= lenl; i++)
	{
		if(i==lenl)
			if(y=='0') break;
			else {l[i] = '1';l[i+1] = '\0';break;}
		if(i >= lens) s[i] = '0';
		t = l[i]+s[i]+y-'0'-'0';
		if(t > '9')
		{
		 y = '1';
		 t -= 10;
		}
		else y = '0';
		l[i] = t;
	}
}
void minus()
{
	int i;
	char t, y;

	y = '0';
	for(i = 0; i < lenl; i++)
	{
		if(i >= lens) s[i] = '0';
		t = l[i]-s[i]-y+'0'+'0';
		if(t < '0')
		{
		 y = '1';
		 t += 10;
		}
		else y = '0';
		l[i] = t;
	}
}

int main()
{
	int i, T, marks, markl, mark;
	
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s%s",s,l);

		if(s[0]=='-')
		{
			marks = -1;
			if(l[0]=='+')
			{
				mark=strlen(l)-strlen(s);
				if(mark==0)
				mark=strcmp(&l[1],&s[1]);
			}
			else if(l[0]!='-')
			{
				mark=strlen(l)-strlen(s)+1;
				if(mark==0)
				mark=strcmp(l,&s[1]);
			}
		}
		else
			marks = 1;
		if(l[0]=='-')
		{
			markl = -1;
			if(s[0]=='+')
			{
				mark=strlen(s)-strlen(l);
				if(mark==0)
				mark=strcmp(&s[1],&l[1]);
			}
			else if(s[0]!='-')
			{
				mark=strlen(s)-strlen(l)+1;
				if(mark==0)
				mark=strcmp(s,&l[1]);
			}
		}
		else
			markl = 1;

			if(s[0] < '0')
				strcpy(s,&s[1]);
		    if(l[0] < '0')
				strcpy(l,&l[1]);
			if(strlen(s) > strlen(l)||(strlen(s)==strlen(l)&&strcmp(s,l)>0))
			{
				strcpy(tmp,s);
			    strcpy(s,l);
			    strcpy(l,tmp);
			}
			lenl = strlen(l);
			lens = strlen(s);
			for(i = 0; i < lenl/2; i++)
			{
				tmp[0] = l[i];
				l[i] = l[lenl-i-1];
				l[lenl-i-1] = tmp[0];
			}
			for(i = 0; i < lens/2; i++)
			{
				tmp[0] = s[i];
				s[i] = s[lens-i-1];
				s[lens-i-1] = tmp[0];
			}

		if(marks*markl==1)
		{
			add();
			if(marks==-1) printf("-");
			for(i = strlen(l)-1; i >= 0; i--)
				if(l[i]!='0')
				{
					l[i+1]='\0';
					break;
				}
			for(i = strlen(l)-1; i >= 0; i--)
				printf("%c",l[i]);
			printf("\n");
		}
		else
		{
			minus();
			if(mark < 0) printf("-");
			if(mark== 0) {printf("0\n");goto end;}
			for(i = strlen(l)-1; i >= 0; i--)
				if(l[i]!='0')
				{
					l[i+1]='\0';
					break;
				}
			for(i = strlen(l)-1; i >= 0; i--)
				printf("%c",l[i]);
			printf("\n");
		}
end : ;
	}
	return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -