1182: a-b
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 419 Solved: 165
[ Submit][ Status][ Web Board]
Description
求a-b的值
Input
第一行一个整数T,表示接下来有T行
每行两个整数是a,b,(0<=a,b<=10^10000)
Output
输出值
Sample Input
2100 98100000000000000000000 1
Sample Output
299999999999999999999
HINT
Source
代码;
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char a[10005],b[10005];
void sub(char a[], int n, char b[], int m)
{
int z=0;
for( ; n>=0; n--, m--)
{
if(m>=0)
a[n] = a[n] - b[m] + '0';
else
a[n] = a[n];
if(a[n] < '0')
{
a[n] = a[n] +10;
a[n-1]--;
}
}
while(a[z] == '0')
z++;
a = a+z;
printf("%s\n",a);
}
void change(char a[], int n, char b[], int m)
{
if(n>m)
{
sub(a, n, b, m);
return ;
}
if(n<m)
{
printf("-");
sub(b, m, a, n);
return ;
}
if(n==m)
{
if(strcmp(a, b) > 0)
{
sub(a, n, b, m);
return ;
}
else if(strcmp(a, b) <0)
{
printf("-");
sub(b, m, a, n);
return ;
}
else
printf("0\n");
return ;
}
}
int main()
{
int t,n,m;
scanf("%d",&t);
while(t--)
{
scanf("%s %s",a,b);
n=strlen(a)-1;
m=strlen(b)-1;
change(a,n,b,m);
}
return 0;
}