본문 바로가기
알고리즘/백준 & swacademy

BOJ 10834 - 벨트( KOI 초, 오버플로우 )

by sun__ 2019. 10. 14.

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

 

반성용 게시글

 

 

문제는 볼 필요도 없고 ans = (ans/a)*b; 가 핵심 코드인데, ans는 a로 나누어 떨어지는 입력만 준다.

 

ans= (ans*b)/a;가 자꾸 틀렸습니다가 떠서 30분정도 삽질했는데, ans*b에서 오버플로우가 났었다.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {

	int n; cin >> n;
	int cnt = 0;

	int ans = 1;
	for (int i = 0,a,b,s; i < n; i++) {
		cin >> a >> b >> s;
		if (s == 1) cnt++;
		ans = (ans / a) * b;
	}

	cout << cnt % 2 << " "<< ans << '\n';

}

 

#include <iostream>
using namespace std;
typedef long long ll;

int main() {
	int n; cin >> n;
	int cnt = 0;

	ll ans = 1;
	for (int i = 0,s; i < n; i++) {
        ll a,b;
		cin >> a >> b >> s;
		if (s == 1) cnt++;
		ans = (ans * b) / a;
	}

	cout << cnt % 2 << " "<< ans << '\n';

}