본문 바로가기

알고리즘/Baekjoon Online Judge

[큰 수 문제 - C++ 사용] https://www.acmicpc.net/problem/1247

01. 문제

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

 

1247번: 부호

총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1≤N≤100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.

www.acmicpc.net

02. 설명

주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같기 때문에 2^127 ~ 2^127-1을 커버가능한 __int128을 사용하여 풀 수 있다.  

 

03. 코드

#include <iostream>
using namespace std;

int main() {
	for (int i = 0; i < 3; ++i) {
		int n;
		cin >> n;
		__int128 s = 0; //-2^127 ~ 2^127-1 커버가능
		long long val = 0;
		for (int j = 0; j < n; ++j) {
			cin >> val;
			s += val;
		}

		if (s > 0) cout << "+" << endl;
		else if (s < 0) cout << "-" << endl;
		else cout << 0 << endl;
	}

	return 0;
}