final tests
This commit is contained in:
parent
a18612f583
commit
a84655600d
34 changed files with 309 additions and 32 deletions
54
test/array/bigint.c
Normal file
54
test/array/bigint.c
Normal file
|
@ -0,0 +1,54 @@
|
|||
int printf(char* format, ...);
|
||||
int getchar();
|
||||
|
||||
|
||||
void read(int* a) {
|
||||
a[0] = 0;
|
||||
while (1) {
|
||||
int c = getchar();
|
||||
if (c == '\n' || c == -1) {
|
||||
break;
|
||||
}
|
||||
if (c >= '0' && c <= '9') {
|
||||
a[++a[0]] = c - '0';
|
||||
}
|
||||
}
|
||||
for (int j = 1; j <= a[0] / 2; j++) {
|
||||
int temp = a[j];
|
||||
a[j] = a[a[0] - j + 1];
|
||||
a[a[0] - j + 1] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
void write(int* a) {
|
||||
int n = a[0];
|
||||
for (int i = n; i > 0; --i) {
|
||||
printf("%d", a[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void add(int* a, int* b) {
|
||||
int n = a[0] > b[0] ? a[0] : b[0];
|
||||
int carry = 0;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
int sum = a[i] + b[i] + carry;
|
||||
a[i] = sum % 10;
|
||||
carry = sum / 10;
|
||||
}
|
||||
if (carry) {
|
||||
a[n + 1] = carry;
|
||||
a[0] = n + 1;
|
||||
} else {
|
||||
a[0] = n;
|
||||
}
|
||||
}
|
||||
|
||||
int main() {
|
||||
int a[100];
|
||||
int b[100];
|
||||
read(a);
|
||||
read(b);
|
||||
add(a, b);
|
||||
write(a);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue