1182: a-b
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 583 Solved: 241
[Submit][Status][Web Board]
Description
求a-b的值
Input
第一行一个整数T,表示接下来有T行
每行两个整数是a,b,(0<=a,b<=10^10000)
Output
输出值
Sample Input
2
100 98
100000000000000000000 1
Sample Output
2
99999999999999999999
题解:要把负数也放进去所以需要转换
Code:
#include<stdio.h>
#include<string.h>
int main()
{
int T;
char a[10005],b[10005],mm[10005];
char x[10005],y[10005];
scanf("%d",&T);
getchar();
while(T--)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(x,0,sizeof(x));
memset(y,0,sizeof(y));
memset(mm,0,sizeof(mm));
scanf("%s %s",&a,&b);
int l1=strlen(a),l2=strlen(b);
if(l1<l2)
{
int t=l1;
l1=l2;
l2=t;
printf("-");
strcpy(mm,a);
strcpy(a,b);
strcpy(b,mm);
}
else if(l1==l2)
{
for(int i=0; i<l1; i++)
{
if(a[i]==b[i])
continue;
if(a[i]>b[i])
break;
else
{
printf("-");
strcpy(mm,a);
strcpy(a,b);
strcpy(b,mm);
}
}
}
for(int i=l1-1,m=0; i>=0; i--,m++)
x[m]=a[i]-'0';
for(int i=l2-1,m=0; i>=0; i--,m++)
y[m]=b[i]-'0';
for(int i=0; i<l1; i++)
{
x[i]-=y[i];
if(x[i]<0)
{
x[i]+=10;
x[i+1]--;
}
}
int f=0;
for(int i=l1-1; i>=0; i--)
{
if(x[i])
f=1;
if(f)
printf("%c",x[i]+'0');
}
if(!f)
printf("0");
printf("\n");
}
return 0;
}