코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n,s,b,res=2000000004;
vector<pair<ll,ll>> v;
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
cin >> s >> b;
v.push_back({s,b});
}
for(int i = 1; i < (1 << n); i++) {
ll temp1 = 1;
ll temp2 = 0;
for(int j = 0; j < n; j++) {
if(i & (1 << j)) {
temp1 *= v[j].first;
temp2 += v[j].second;
}
}
res = min(res, abs(temp1 - temp2));
}
cout << res << '\n';
}
신맛과 쓴맛이 있는 것들을 받아준 후, 비트연산자를 이용해 부분집합마다 조건에 맞는 값을 구하고 그 중 최소값을 찾아주었다.
'백준' 카테고리의 다른 글
[백준] 1806번 부분합 C++ 코드 (0) | 2024.08.11 |
---|---|
[백준] 2166번 다각형의 면적 C++ 코드 (0) | 2024.08.11 |
[백준] 2098번 외판원 순회 C++ 코드 (0) | 2024.08.08 |
[백준] 15624번 피보나치 수 7 C++ 코드 (0) | 2024.08.06 |
[백준] 1965번 상자넣기 C++ 코드 (0) | 2024.08.06 |