现有一组砝码,重量互不相等,分别为 m1,m2,m3 .mn ;
每种砝码对应的数量为 x1,x2,x3.xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:
称重重量包括 0
本题有多组输入
数据范围:每组输入数据满足
现有一组砝码,重量互不相等,分别为 m1,m2,m3 .mn ;
每种砝码对应的数量为 x1,x2,x3.xn 。现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。
注:
称重重量包括 0
本题有多组输入
数据范围:每组输入数据满足
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<int> weight(n);
vector<int> num(n);
for(int i=0;i<n;i++)
cin>>weight[i];
for(int i=0;i<n;i++)
cin>>num[i];
vector<int> ans;
for(int i=0;i<=num[0];i++){
ans.push_back(i*weight[0]);
}
for(int j=1;j<n;j++){
int size=ans.size();
for(int i=1;i<=num[j];i++)
for(int m=0;m<size;m++){
if(find(ans.begin(),ans.end(),ans[m]+i*weight[j])==ans.end())
ans.push_back(ans[m]+i*weight[j]);
}
}
cout<<ans.size()<<endl;
}
return 0;
}