티스토리 뷰

문제

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자리를 넘지 않는다.

출력

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

 

#include <iostream>
using namespace std;
int main() {
	string a, b;
	cin >> a >> b;
	int a_arr[10000] = {}, b_arr[10000] = {};
	for (int i = 0; i < a.length(); i++) {
		a_arr[i] = a[i] - 48;
	}
	for (int i = 0; i < b.length(); i++) {
		b_arr[i] = b[i] - 48;
	}
	long long int sum = 0;
	for (int i = 0; i < a.length(); i++) {
		for (int j = 0; j < b.length(); j++) {
			sum += a_arr[i] * b_arr[j];
		}
	}
	cout << sum << endl;
}

 

해결: 문자열로 입력받은 후 각 자리 문자를 정수로 변환해 정수형 배열에 저장

a 배열과 b 배열의 숫자를 차례로 곱한 후 더해나감

 

sum의 자료형을 int에서 long long int로 바꿔서 했더니 해결 (볶은아몬드야 고마워😇)

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

[백준/C++] 1919 애너그램 만들기  (0) 2021.02.23
[백준/C++] 1340 연도 진행바  (0) 2021.02.20
[백준/C++] 1233 주사위  (0) 2021.02.18
[백준/C++] 1193 분수찾기  (0) 2021.02.18
[백준/C++]1075 나누기  (0) 2021.02.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함