본문 바로가기

백준/C++

[C++] 백준 1225번 - 이상한 곱셈

728x90

 

문제 1225번

https://www.acmicpc.net/problem/1225

 

1225번: 이상한 곱셈

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

www.acmicpc.net

 

이 문제는 자릿수마다 곱해주고 다 더해줘야하기 때문에 입력값을 문자열로 받아준다. 그리고 이중 for문을 이용하여 각 자리수를 곱해주고 result변수에 더해주는데, 여기서 A,B는 문자열이므로 '0'를 빼서 곱해주고 result에 더한다. string에서 '0'을 빼면 int형이 된다. 그렇게 반복문을 다 돌면 result값을 출력해주면 끝난다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	string A, B;
	long long result = 0;
	cin >> A >> B;
	for (int i = 0; i < A.length(); i++) {
		for (int j = 0; j < B.length(); j++) {
			result += (A[i] - '0') * (B[j] - '0');	// string - '0'을 하면 int형이 된다
		}
	}
	cout << result;

	return 0;
}

 

 

처음에 int로 했다가 틀려서 long long으로 바꿨다. 1만자리까지 곱의 결과를 더하기 때문에 int 범위를 초과할 수도 있어서 long long으로 해줘야 한다고 한다.

728x90