比赛 防止浮躁的小练习v0.4 评测结果 AAAAAA
题目名称 增强的减法问题 最终得分 100
用户昵称 kxxy 运行时间 0.002 s
代码语言 C++ 内存使用 0.31 MiB
提交时间 2016-10-13 15:58:56
显示代码纯文本
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include <cstdio>
using namespace std;
string x, y;
int xx[101]={0}, yy[101]={0}, result[101]={0};
bool poster=true;
int maxlength=0;
int minlength=0;
inline void compare(string x, string y)
{
	if (x.length()==y.length())
	{
		maxlength=x.length();
		minlength=y.length();
		if (x>y)
		{
			int j=x.length();
			int k=y.length();
			for (int i=j, q=0; i>0; i--, q++)
				xx[q]=x[i-1]-48;
			for (int i=k, q=0; i>0; i--, q++)
				yy[q]=y[i-1]-48;
		}
		else 
		{
			poster=false;
			int j=x.length();
			int k=y.length();
			maxlength=y.length();
			minlength=x.length();
			for (int i=j, q=0; i>0; i--, q++)
				yy[q]=x[i-1]-48;
			for (int i=k, q=0; i>0; i--, q++)
				xx[q]=y[i-1]-48;
		}
	}
	else if (x.length()>y.length())
	{
		int j=x.length();
		int k=y.length();
		maxlength=x.length();
		minlength=y.length();
		for (int i=j, q=0; i>0; i--, q++)
			xx[q]=x[i-1]-48;
		for (int i=k, q=0; i>0; i--, q++)
			yy[q]=y[i-1]-48;
	}
	else if (x.length()<y.length())
	{
		poster=false;
		int j=x.length();
		int k=y.length();
		maxlength=y.length();
		minlength=x.length();
		for (int i=j, q=0; i>0; i--, q++)
			yy[q]=x[i-1]-48;
		for (int i=k, q=0; i>0; i--, q++)
			xx[q]=y[i-1]-48;
	}
}
inline void sub()
{
	for (int i=0; i<maxlength; i++)
		result[i]=xx[i];
	for (int i=0; i<minlength; i++)
		result[i]-=yy[i];
	for (int i=0; i<maxlength-1; i++)
	{
		while (result[i]<0)
		{
			result[i]+=10;
			result[i+1]-=1;
		}
	}
}
inline void out_data()
{
	bool flag=false;
	if (poster==false)
		cout<<"-";
	for (int i=maxlength; i>0; i--)
	{
		if (result[i-1]!=0)
		{
			flag=true;
			cout<<result[i-1];
		}
		else if (result[i-1]==0&&flag==true)
			cout<<0;
	}
}
int main()
{
	freopen("sub.in","r",stdin);
	freopen("sub.out","w",stdout);
	cin>>x>>y;
	compare(x, y);
	if(x==y)
	{
		cout<<0;
		return 0;
	}
	sub();
	out_data();
	return 0;
}