比赛 防止浮躁的小练习v0.4 评测结果 AAAAAA
题目名称 增强的减法问题 最终得分 100
用户昵称 ZWOI_ヤシニャ 运行时间 0.001 s
代码语言 C 内存使用 0.29 MiB
提交时间 2016-10-13 21:22:53
显示代码纯文本
#include<stdio.h>
#include<math.h>
#include<string.h>

char a[102],b[102];
int c[102],d[102];
int compare(int x)
{
	int i;
	for (i=x;i>=1;i--)
	{
		if (c[i]>d[i]) return 0;
		if (c[i]<d[i]) return 1;
	}
	return 2;
}
int main()
{
	int i=0,j=0,x,y;
	freopen("sub.in","r",stdin);
	freopen("sub.out","w",stdout);
	gets(a);gets(b);
	i=strlen(a); j=strlen(b);
	for (x=1;x<=i;x++) c[x]=a[i-x]-48;
	for (x=1;x<=j;x++) d[x]=b[j-x]-48;
    if (i>j)
	{
		for (x=1;x<=i;x++)
		{
			if(c[x]>=d[x])
			{
				c[x]=c[x]-d[x];
			}
			else
			{
				c[x]=c[x]+10-d[x];
				c[x+1]=c[x+1]-1;
			}
		}
	}
	if (i==j)
	{
		y=compare(i);
		if (y==0)
		{
			for (x=1;x<=i;x++)
			{
				if(c[x]>=d[x])
				{
					c[x]=c[x]-d[x];
				}
				else
				{
					c[x]=c[x]+10-d[x];
					c[x+1]=c[x+1]-1;
				}
			}
		}
		if (y==1)
		{
			printf("-");
			for (x=1;x<=i;x++)
			{
				if(d[x]>=c[x])
				{
					c[x]=d[x]-c[x];
				}
				else
				{
					c[x]=c[x]+10-d[x];
					d[x+1]=d[x+1]-1;
				}
			}
		}
		if (y==2) 
		{
			printf("0");
			return 0;
		}
	}
	if (i<j)
	{
		i=j;
		printf("-");
		for (x=1;x<=i;x++)
		{
			if(d[x]>=c[x])
			{
				c[x]=d[x]-c[x];
			}
			else
			{
				c[x]=d[x]+10-c[x];
				d[x+1]=d[x+1]-1;
			}
		}
	}
	while(c[i]==0) i--; 
	for (x=i;x>=1;x--) printf("%d",c[x]);
	
	return 0;	
}