题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#include <iostream> #include <vector> #include <set> using namespace std; int main() { int n; cin >> n; vector<int> ms; vector<int> nums; for(int i = 0;i < n;i++){ int m; cin >> m; ms.push_back(m); } for(int i = 0;i < n;i++){ int num; cin >> num; nums.push_back(num); } set<int> st; st.insert(0); for(int i = 0;i < n;i++){ for(int j = 0;j < nums[i];j++){ auto tmp = st; for(auto it_k = tmp.begin();it_k != tmp.end();it_k++){ st.insert(*it_k + ms[i]); } } } cout << st.size(); } // 64 位输出请用 printf("%lld")