반응형
https://www.acmicpc.net/problem/10757
10757번: 큰 수 A+B
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
https://www.acmicpc.net/problem/15353
15353번: 큰 수 A+B (2)
C++17, C11, C99, C++98, C++11, C++14, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)
www.acmicpc.net
두 개의 큰 수를 더하는 문제였습니다.
범위가 커서 문자열로 받아서 각 자릿수별로 덧셈을 진행해주었습니다.
10757과 15353번 모두 동일한 소스코드로 제출하였습니다.
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int val, carry = 0;
string a, b, c;
void f(string &s, int &len) {
for (; len >= 0; len--) {
val = s[len] - '0' + carry;
c.push_back(val % 10 + '0');
carry = val / 10;
}
}
int main() {
cin >> a >> b;
int alen = a.length() - 1, blen = b.length() - 1;
for (; alen >= 0 && blen >= 0; alen--, blen--) {
val = a[alen] - '0' + b[blen] - '0' + carry;
c.push_back(val % 10 + '0');
carry = val / 10;
}
f(a, alen); // a또는 b의 남은 자릿수에 대해 덧셈
f(b, blen);
if (carry == 1) c += '1';
reverse(c.begin(), c.end());
cout << c;
}
반응형
'Algorithm' 카테고리의 다른 글
백준 17135 : 캐슬 디펜스 (0) | 2021.11.11 |
---|---|
백준 14891 : 톱니바퀴 (0) | 2021.11.11 |
백준 17471 : 게리멘더링 (0) | 2021.11.11 |
백준 15654 : N과 M (5) (0) | 2021.11.11 |
백준 2437 : 저울 (0) | 2021.11.11 |