본문 바로가기

백준/C++

[Baekjoon/C++] 이상한 곱셈 1225번

Baekjoon Online Judge

문제로 이동

 

문제

A×B를 계산하다 지겨워진 형택이는 A×B를 새로운 방법으로 정의하려고 한다.

A에서 한 자리를 뽑고 × B에서 임의로 한 자리를 뽑아 곱한다.

의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n×m개)을 더한 수로 정의하려고 한다.

예를 들어 121×34는

1×3 + 1×4 + 2×3 + 2×4 + 1×3 + 1×4 = 28

이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다.

 

출력

첫째 줄에 형택이의 곱셈 결과를 출력한다.

 


예제 입력 예제 출력
123 45 54

풀이

#include <iostream>
using namespace std;

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

    long long sum = 0;

    // 새롭게 정의된 곱셈의 결과 구하기
    if (A != "0" && B != "0") {
        for (int i = 0; i < A.length(); i++)
            for (int j = 0; j < B.length(); j++)
                sum += ((A[i] - '0') * (B[j] - '0'));
    }

    // 출력
    cout << sum;

    return 0;
}

곱셈의 결과가 너무 클 수 있기 때문에 sum 변수를 long long으로 선언하였다. 

A, B 두 수의 자릿수를 서로 각각 곱해서 더해야 하므로 두 수를 string으로 받아서 원하는 자릿수의 숫자를 쉽게 고를 수 있게끔 했다.

'백준 > C++' 카테고리의 다른 글

[Baekjoon/C++] 성 지키기 1236번  (0) 2022.04.29
[Baekjoon/C++] 주사위 1233번  (0) 2022.04.29
[Baekjoon/C++] 8진수 2진수 1212번  (0) 2022.04.29
[Baekjoon/C++] 운동 1173번  (0) 2022.04.29
[Baekjoon/C++] 농구 경기 1159번  (0) 2022.04.29