별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A와 B가 주어진다. (0 < A,B < $10^{10000}$)

 

출력

첫째 줄에 A+B를 출력한다.

 

예제 입력 1

9223372036854775807 9223372036854775808

 

예제 출력 1

18446744073709551615

 

출처

  • 문제를 만든 사람: baekjoon
  • 데이터를 추가한 사람: dlaud5379, gcon16
  • 문제의 오타를 찾은 사람: jh05013

 

알고리즘 분류

  • 수학
  • 구현
  • 사칙연산
  • 임의 정밀도 / 큰 수 연산

코드

 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <string>
using namespace std;

string BigSum(string a, string b) {
    if (a.size() < b.size()) {
        swap(a, b);
    }

    int j = a.size() - 1;
    for (int i = b.size() - 1; i >= 0; i--, j--) {
        a[j] += (b[i] - '0');
    }

    for (int i = a.size() - 1; i > 0; i--) {
        if (a[i] > '9') {
            int d = a[i] - '0';
            a[i - 1] = ((a[i - 1] - '0') + d / 10) + '0';
            a[i] = (d % 10) + '0';
        }
    }
    
    if (a[0] > '9') {
        string k;
        k += a[0];
        a[0] = ((a[0] - '0') % 10) + '0';
        k[0] = ((k[0] - '0') / 10) + '0';
        a = k + a;
    }

    return a;
}

int main() {
    string A, B, sum;
    
    cin >> A >> B;

    sum = BigSum(A, B);

    cout << sum << endl;

    return 0;
}

 

문자열을 이용한 큰 수 합 알고리즘을 이용하여 문제를 해결하였다.

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖