알고리즘
C++ 큰 수 더하기,빼기, 곱하기
Chars4785
2019. 2. 8. 12:31
덧셈
long long 사이즈를 넘어가는 값을 더하는 문제입니다.
예제
12131238912943647264921780210
1231232132716391368131963
더하기
!!!
------------------------------------------------------
#include <iostream>
#include <string.h>
using namespace std;
char first[101];
char second[101];
int result[101];
int main(){
cin.getline(first,100);
cin.getline(second,100);
int lenF = strlen(first);
int lenS = strlen(second);
int big,plus=0,each=0;
char *bigOne;
if(lenF > lenS)
{
big = lenF;
bigOne = first;
}else {
big = lenS;
bigOne = second;
}
//1234
//11
int value;
for(int i=0; i<big; i++)
{
if(lenS-1-i <0 ) value = first[lenF-1-i]-48;
else if(lenF-1-i <0) value = second[lenS-1-i]-48;
else value = first[lenF-1-i] -48 + second[lenS-1-i] -48;
each = (value+plus) % 10 ;
plus = (value+plus) /10;
result[i] = each;
}
if(plus != 0)
{
result[big]= plus;
big++;
}
for(int i = big-1; i>=0;i--)
cout<<result[i];
return 0;
}
어려웠던 점은
첫번째
0 + 1 인 경우에 0이라는 char 타입을 구별해주는 것이였다.
2가지 방법이 있는데
1. 그냥 무시하기
2. 더하는 것을 integer형으로 0을 더해주면 된다.
두번째
어떻게 길이가 같지 않는 두 char 배열을 맞추는 것인데
> 그냥 가장 큰 길이를 먼저 찾고 result 를 거꾸로 넣고 다시 거꾸로 빼면 된다.
약간 무식해 보이는 방법 사용 했다.
아직 공부중이고 더 좋은 방법이 있다면 계속 수정할 계획이다.
--------------------------------------------------------------
뺄셈
예제 입력
18592918185
2195812983912895799129
예제 출력
-2195812983894302880944
--------------------------------------------------------------
곱하기