代码拉取完成,页面将自动刷新
#include <stdio.h>
void shift(char *, int *);
void Add(int *, int *, int *);
#define MAX 504
char cha[MAX] = {0}, chb[MAX] = {0};
int a[MAX] = {0}, b[MAX] = {0}, c[MAX] = {0}, i = 0, j;
int main(void) {
scanf("%s", cha);
scanf("%s", chb);
shift(cha, a);
shift(chb, b);
for (j = MAX - 1; j >= 0; j--) {
if (a[j] != -b[j]) {
break;
}
}
if (j < 0) {
printf("0");
return 0;
}
Add(a, b, c);
if (c[1] == 9) {
i++;
while (c[i] == 9) {
i++;
}
printf("-");
for (i; i < MAX - 1; i++) {
printf("%d", 9 - c[i]);
}
printf("%d", 10 - c[i]);
} else {
while (c[i] == 0) {
i++;
}
for (i; i < MAX; i++) {
printf("%d", c[i]);
}
}
return 0;
}
void shift(char *cha, int *a) {
int i = MAX - 1, j = MAX - 1;
if (cha[0] != '-') {
while (cha[i] == 0) {
i--;
}
for (i; i >= 0; i--) {
a[j] = cha[i] - '0';
j--;
}
} else {
while (cha[i] == 0) {
i--;
}
for (i; i > 0; i--) {
a[j] = cha[i] - '0';
a[j] = -a[j];
j--;
}
cha[0] = 0;
}
return;
}
void Add(int *a, int *b, int *c) {
int i;
for (i = MAX - 1; i > 0; i--) {
c[i] += a[i] + b[i];
if (c[i] > 9) {
c[i] -= 10;
c[i - 1]++;
} else if (c[i] < 0) {
c[i] += 10;
c[i - 1]--;
}
}
return;
}
/*
讲真的,我现在再来看这个程序我都佩服我自己,我当时真牛逼,写的程序现在看还是那么
牛逼,这个高精加法,不仅是高精加法,也是高精减法
*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。