Problem. Input two BIG integers and add them.
134984530247143098190
#include <stdio.h>
void push(int s[], int x){
//printf("push %d %d ", s[0], x);
s[++s[0]]=x;
}
int pop(int s[]) {
return s[s[0]--];
}
int isnotempty(int s[]) {
return s[0]>0;
}
int main() {
char stra[400];
char strb[400];
int stx[400]={0,};
int sty[400]={0,};
int stRes[400]={0,};
int i, x, y, z, carry;
printf("enter first number: ");
gets(stra);
printf("enter second number: ");
gets(strb);
i=0;
while(*(stra+i)) {
push(stx, *(stra+i)-'0');
i=i+1;
}
i=0;
while(*(strb+i)) {
push(sty, *(strb+i)-'0');
i=i+1;
}
carry=0;
x=0;
y=0;
while(isnotempty(stx) && isnotempty(sty)) {
x=pop(stx);
y=pop(sty);
z=x+y+carry;
carry=z/10;
z=z%10;
push(stRes, z);
}
while(isnotempty(stx)) {
x=pop(stx);
z=x+carry;
carry=z/10;
z=z%10;
push(stRes, z);
}
while(isnotempty(sty)) {
y=pop(sty);
z=y+carry;
carry=z/10;
z=z%10;
push(stRes, z);
}
if(carry) push(stRes, carry);
while(isnotempty(stRes)) {
z=pop(stRes);
printf("%d", z);
}
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
vc++ 2010 에서 cntrl+F5 가 제대로 안먹힐때 (0) | 2012.04.15 |
---|---|
10진수를 2진수로 바꾸는 간단한 C언어 프로그래밍 (0) | 2012.04.15 |
매우 긴 문자열 출력하기. (0) | 2012.04.11 |
요상한 프로그램 (0) | 2012.04.10 |
scanf의 리턴값 이용한 입력 받기 (0) | 2012.04.08 |