比赛 NOIP2015普及组练习 评测结果 AAAAAA
题目名称 增强的减法问题 最终得分 100
用户昵称 AAAAAAAAAA 运行时间 0.009 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2015-11-05 19:35:06
显示代码纯文本
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin ("sub.in");
ofstream fout ("sub.out");
string x,y;
int l1,l2;
void swap2(int* l1,int* l2)
{
	int s2=*l1;
	*l1=*l2;
	*l2=s2;
}
void swap1(string* x,string* y)
{
	string s1=*x;
	*x=*y;
	*y=s1;
}
bool bidaxiao(string x,string y,int l1,int l2)
{
	bool p=false;
	if (l1<l2)
		p=true;
	if (l1==l2)
		if (x<y)p=true;
	return p;
}
int main()
{
	fin>>x>>y;
	if (x==y)
	{
		fout<<'0';
		return 0;
	}
	l1=strlen(x.c_str());
	l2=strlen(y.c_str());
	int l=(l1>l2?l1:l2);
	if (bidaxiao(x,y,l1,l2)==true)
	{
		swap1(&x,&y);
		swap2(&l1,&l2);
		fout<<"-";
	}
	int a[110]={0},b[110]={0},c[110]={0};
	for (int i=1;i<=l1;i++)
		a[i]=x[l1-i]-'0';
	for (int i=1;i<=l2;i++)
		b[i]=y[l2-i]-'0';
	for (int i=1;i<=l;i++)
	{
		if (a[i]-b[i]>=0)c[i]=a[i]-b[i];
		else 
		{
			c[i]=a[i]-b[i]+10;
			a[i+1]--;
		}
	}
	while (l>0&&c[l]==0)
		if (c[l]==0)l--;
	for (int i=l;i>0;i--)
		fout<<c[i];
	fout<<endl;
	return 0;
}