#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int top1 = -1;
int top2 = -1;
int top3 = -1;
int stack1[101];
int stack2[101];
int stack3[101];
void spush1(int* S);
void spush2(int* S);
void calculate(void);
void pop(void);
int sum = stack1[top1] + stack2[top2];
int main() {
char s1[101] = { 0, }, s2[101] = { -1, };//문자열로써 큰 자리수의 숫자를 입력받는다.
int S1[101] = { 0, }, S2[101] = { -1, };//문자열로 받은 큰 자리수를 INT형으로 바꿔줄 빈 배열을 하나 할당한다.
scanf("%s %s", s1, s2);
for (int i = 0; i < 101; i++) {//문자열에서 인트형으로 변환시켜준다.
S1[i] = s1[i] - 48;
}
for (int i = 0; i < 101; i++) {
S2[i] = s2[i] - 48;
}
spush1(S1);
spush2(S2);
calculate();
pop();
//for (int i = 0; i <= top2; i++) {
// printf("%d", stack2[i]);
//}
//printf("\n%d", top1);
//printf("\n");
//for (int i = 0; i < 30; i++) {
// printf("%d", S1[i]);
//}
}
void spush1(int* S) {// spush1 과 spush2 두 함수를 매개변수만 달리하여 같이 쓰고 싶은데 매개변수로 top과 stack 배열을 사용하면 값이 적용이 안된다. 원인이 무엇인가?
for (int i = 0; ; i++) {
if (S[i] < 0) break;
top1++;
stack1[top1] = S[i];
}
}
void spush2(int* S) {
for (int i = 0; ; i++) {
if (S[i] < 0) break;
top2++;
stack2[top2] = S[i];
}
}
void calculate(void) {
int sum = stack1[top1] + stack2[top2];
while (top1 >= 0 && top2 >= 0) {
if (sum >= 10) {
stack3[++top3] = sum % 10;
if (top1 >= top2) {
stack1[top1 - 1]++;
top1--;
top2--;
}
else {
stack2[top2 - 1]++;
top1--;
top2--;
}
}
else {
top3++;
stack3[++top3] = sum & 10;
top1--;
top2--;
}
}
if (top1 >= top2) {
while (top1 >= 0) {
top3++;
stack3[top3] = stack1[top1];
top1--;
}
}
else {
while (top2 >= 0) {
top3++;
stack3[top3] = stack2[top2];
top2--;
}
}
}
void pop(void) {
while (top3 >= 0) {
printf("%d", stack3[top3]);
top3--;
}
}