| 比赛 | 
    NOIP2015普及组练习 | 
    评测结果 | 
    AAAWAA | 
    | 题目名称 | 
    增强的减法问题 | 
    最终得分 | 
    83 | 
    | 用户昵称 | 
    sxysxy | 
    运行时间 | 
    0.007 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.31 MiB  | 
    | 提交时间 | 
    2015-11-06 18:50:16 | 
显示代码纯文本
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;
#define MAXN (511)
char a[MAXN];
char b[MAXN];
char c[MAXN];
int la,lb;
int fh = 0;     //正数  //1的话就是负数了 
void mov()
{
	int i,j,k;
	if(la < lb)
	{
		j = lb - la;
		for(k = lb-1; k >= j; k--)
		{
			a[k] = a[k-j];
			a[k-j] = 0;
		}
	}else if(la > lb)
	{
		j = la - lb;
		for(k = la-1; k >= j; k--)
		{
			b[k] = b[k-j];
			b[k-j] = 0;	
		}
	}
}
void judge()
{
	int t;
	string s1,s2;
	if(la < lb || (la==lb && strcmp(a,b)<0))
	{
		s1 = a;
		s2 = b;
		strcpy(a, s2.c_str());
		strcpy(b, s1.c_str());
		fh = 1;	
		t = la;
		la = lb;
		lb = t;
	}
}
int main()
{
	freopen("sub.in", "r", stdin);
	freopen("sub.out", "w", stdout);
	int i,j;
	scanf("%s %s", a, b);
	la = strlen(a);
	lb = strlen(b);
		
	judge();
	
	for(i = 0; i < la; i++)
		a[i] -= '0'; 			 //得到相应数字 
	for(j = 0; j < lb; j++)
		b[j] -= '0';
	mov();         				//按位对齐 
	
	for(i = 1; i <= max(la,lb); i++)
		c[i] = a[i-1]-b[i-1];          
									   
	for(j = max(la,lb); j >= 1; j--)
	{					
		if(c[j] < 0)					
		{									
			c[j-1] -= 1;
			c[j] += 10;
		}	
	}	
	
	if(fh)putchar('-');
	int f = 1;
	for(i = 0; i <= max(la,lb); i++)
	{
		if(c[i] == 0 && f)continue;			//去掉开头多余的0 
		putchar(c[i]+'0');
		f = 0;
	}
	
	putchar('\n');
	return 0;
}