题目描述:
求两个不超过100位的非负整数a-b的差
输入:
有两行,每行是一个不超过100位的非负整数,没有多余的前导0。
输出:
一行,a-b的结果。
样例输入:
2 1
样例输出:
1
代码:
#include <bits/stdc++.h>
using namespace std;
void give(char sour[], int dest[])
{
int len = strlen(sour);
for(int i=0; i<len; i++)
{
dest[i] = sour[len-1-i] - '0';
}
return;
}
int main()
{
char a[1000],b[1000];
cin>>a>>b;
bool positive=true;
int lena = strlen(a);
int lenb = strlen(b);
int len = max(lena,lenb);
if(lena > lenb) positive = true;
else if(lena < lenb) positive = false;
else
{
for(int i=0; i<len; i++)
{
if(a[i]>b[i])
{
positive = true;
break;
}
else if(a[i]<b[i])
{
positive = false;
break;
}
else continue;
}
}
int up[1000]= {0},down[1000]= {0};
if(positive == true)
{
give(a,up);
give(b,down);
}
else
{
give(a,down);
give(b,up);
}
int weishu;
for(int i=0; i<len; i++)
{
up[i] -= down[i];
if(up[i] < 0)
{
up[i] += 10;
up[i+1] --;
}
if(up[i])
{
weishu = i;
}
}
if(!positive) cout<<"-";
for(int i=weishu; i>=0; i--)
{
cout<<up[i];
}
return(0);
}