mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
95 lines
1.5 KiB
C
95 lines
1.5 KiB
C
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
void resort(char *a, int size) {
|
||
|
int i;
|
||
|
for(i = 0; i < size / 2; i++) {
|
||
|
char c = a[i];
|
||
|
a[i] = a[size - 1 - i];
|
||
|
a[size - 1 - i] = c;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int max(int a, int b) {
|
||
|
return a > b ? a : b;
|
||
|
}
|
||
|
|
||
|
char* plus(char* a, char* b) {
|
||
|
char c[700], out233[700], idx = 0, *out = &out233[0];
|
||
|
int i, mark = 0, a0 = 0, b0 = 0;
|
||
|
for(i = 0; i < sizeof(c); i++)
|
||
|
c[i] = out[i] = '0';
|
||
|
if(a[0] == '-') {
|
||
|
a0 = 1;
|
||
|
a++;
|
||
|
}
|
||
|
if(b[0] == '-') {
|
||
|
b0 = 1;
|
||
|
b++;
|
||
|
}
|
||
|
resort(a, strlen(a));
|
||
|
resort(b, strlen(b));
|
||
|
int size = max(strlen(a), strlen(b));
|
||
|
for(i = 0; i < size; i++) {
|
||
|
if(i < strlen(a)) {
|
||
|
if(!(a0 == b0) && a0)
|
||
|
c[i] -= a[i] - '0';
|
||
|
else
|
||
|
c[i] += a[i] - '0';
|
||
|
}
|
||
|
if(i < strlen(b)) {
|
||
|
if(!(a0 == b0) && b0)
|
||
|
c[i] -= b[i] - '0';
|
||
|
else
|
||
|
c[i] += b[i] - '0';
|
||
|
}
|
||
|
c[i] += mark;
|
||
|
mark = 0;
|
||
|
if(c[i] > '9') {
|
||
|
c[i] -= 10;
|
||
|
mark = 1;
|
||
|
}
|
||
|
if(c[i] < '0') {
|
||
|
c[i] += 10;
|
||
|
mark = -1;
|
||
|
}
|
||
|
}
|
||
|
for(i = size; i > 0; i--)
|
||
|
if(c[i] != '0' || mark) {
|
||
|
if(mark) i--;
|
||
|
break;
|
||
|
}
|
||
|
if(mark < 0 || a0 && b0) {
|
||
|
out[idx] = '-';
|
||
|
idx++;
|
||
|
}
|
||
|
if(mark > 0) {
|
||
|
out[idx] = '1';
|
||
|
idx++;
|
||
|
}
|
||
|
for(; i >= 0; i--) {
|
||
|
if(mark < 0 && (a0 != b0))
|
||
|
c[i] = '9' - (c[i] - '0');
|
||
|
out[idx] = c[i];
|
||
|
idx++;
|
||
|
}
|
||
|
free(a);
|
||
|
free(b);
|
||
|
return out;
|
||
|
}
|
||
|
|
||
|
int main(int argc, char* argv[]) {
|
||
|
int cnt;
|
||
|
scanf("%i", &cnt);
|
||
|
char* res = (char*) malloc (700 * sizeof(char));
|
||
|
res[0] = '1';
|
||
|
while(cnt--) {
|
||
|
char* a = (char*) malloc (700 * sizeof(char));
|
||
|
strcpy(a, res);
|
||
|
res = plus(a, res);
|
||
|
}
|
||
|
puts(res);
|
||
|
return 0;
|
||
|
}
|