1 Star 0 Fork 0

where_know_return/刷题笔记

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
洛谷1601.cpp 1.35 KB
一键复制 编辑 原始数据 按行查看 历史
where_know_return 提交于 2022-02-17 01:42 . 高精加减法
#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;
}
/*
讲真的,我现在再来看这个程序我都佩服我自己,我当时真牛逼,写的程序现在看还是那么
牛逼,这个高精加法,不仅是高精加法,也是高精减法
*/
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/where-know-return/brush-notes.git
git@gitee.com:where-know-return/brush-notes.git
where-know-return
brush-notes
刷题笔记
master

搜索帮助