记录编号 234834 评测结果 AAAAAA
题目名称 增强的减法问题 最终得分 100
用户昵称 GravatarRiolu 是否通过 通过
代码语言 C++ 运行时间 0.001 s
提交时间 2016-03-09 17:37:58 内存使用 0.32 MiB
显示代码纯文本
/*=========================================*
  * Auther: Riolu
  * Page: 143
  * Time: 2016/3/9
  * ©Copyright 2016 Riolu. All Rights Reserved.
  *=========================================*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

char aa1[1000],bb1[1000],cc1[1000];

void add(char a1[],char b1[],char c1[]){//a+b=c
	int lena,lenb,lenc;
	int a[1000],b[1000],c[1000],x,i;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	lena=strlen(a1);
	lenb=strlen(b1);
	for(i=0;i<lena;i++)							//字符串转化为数组
		a[lena-i]=a1[i]-48;
	for(i=0;i<lenb;i++)
		b[lenb-i]=b1[i]-48;						//倒序存储
	lenc=1;   x=0;									//x进位缓存
	while(lenc<=lena || lenc<=lenb){
		c[lenc]=a[lenc]+b[lenc]+x;				//相加与进位
		x=c[lenc]/10;								//进位值
		c[lenc]%=10;								//取个位
		lenc++;
		}
	c[lenc]=x;
	if(c[lenc]==0)
		lenc--;
	for(i=lenc;i>=1;i--)
		c1[lenc-i]=c[i]+48;							//倒序返回
	c1[lenc]='\0';
	}	

	
void minuss(char a2[],char b2[],char c2[]){//a-b=c
	int lena,lenb,lenc;
	int a[1000],b[1000],c[1000],i,fushu=0;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	lena=strlen(a2);
	lenb=strlen(b2);
	if(lena<lenb ||(lena==lenb)&&strcmp(a2,b2)<0)
	{														//a1>b1返回正整数
		char t[1000];									//交换减数
		strcpy(t,a2);
		strcpy(a2,b2);
		strcpy(b2,t);
		int tmp=lena;
		lena=lenb;
		lenb=tmp;
		fushu=1;
		}
	
	for(i=0;i<lena;i++)							//字符串转化为数组
		a[lena-i]=a2[i]-48;
	for(i=0;i<lenb;i++)
		b[lenb-i]=b2[i]-48;						//倒序存储
	lenc=1; 												//位数
	while(lenc<=lena || lenc<=lenb){
		if(a[lenc]<b[lenc]){						//不够减借位
			a[lenc]+=10;
			a[lenc+1]--;
			}
		c[lenc]=a[lenc]-b[lenc];					//相减
		lenc++;
		}
	while((c[lenc]==0)&&(lenc>1)) lenc--;//高位0舍弃
	if(fushu==0){
		for(i=lenc;i>=1;i--)
			c2[lenc-i]=c[i]+48;						//倒序返回
		c2[lenc]='\0';
		}
	if(fushu==1){
		for(i=lenc;i>=1;i--)
			c2[lenc-i+1]=c[i]+48;					//倒序返回
		c2[lenc+1]='\0';
		c2[0]='-';
		}
	}	
	
int main()
{
	freopen("sub.in","r",stdin);
	freopen("sub.out","w",stdout);
	gets(aa1);gets(bb1);	
	//add(aa1,bb1,cc1);
	minuss(aa1,bb1,cc1);
	cout<<cc1;
	return 0;
}