AcWing 792. 高精度减法
原题链接
简单
作者:
种花家的鸭脖
,
2023-03-22 18:23:43
,
所有人可见
,
阅读 159
#include<stdio.h>
#include<string.h>
#define MAX 1000000
#pragma warning(disable : 4996)
char s1[MAX], s2[MAX];
int a[MAX] = { 0 }, b[MAX] = { 0 };
int main(){
int len_max, i;
char* pa = s1;
char* pb = s2;
scanf("%s", s1);
scanf("%s", s2);
int len1, len2;
len1 = strlen(pa);
len2 = strlen(pb);
if (strlen(s2) > strlen(s1) || strlen(s1) == strlen(s2) && strcmp(s2, s1) > 0) {
pa = s2;
pb = s1;
len1 = strlen(pa);
len2 = strlen(pb);
printf("-");
}
len_max = len1;
for (i = 0; i < len1; i++) {
a[i] = pa[len1 - 1 - i] - '0';
}
for (i = 0; i < len2; i++) {
b[i] = pb[ len2 - 1 - i]-'0';
}
for (i = 0; i <len_max; i++) {
if (a[i] >= b[i]) {
a[i] -= b[i];
}
else {
a[i] = a[i] + 10 - b[i];
a[i + 1] -= 1;
}
}
while (a[len_max] == 0 && len_max > 0)len_max--;
for (i = 0; i <=len_max; i++) {
printf("%d", a[len_max - i]);
}
return 0;
}