DFS
#include <iostream>
using namespace std;
int n[7];//价值为i的物品的个数
int sumValue, halfValue;//物品总价值, 物品平分价值
bool flag;//标记是否能平分SumValue
//pre:当前弹珠价值,value表示分得的价值
void DFS(int value, int pre) {
if (value == halfValue) {//成功平分,递归出口
flag = true;
return;
}
for (int i = pre; i >= 1; i--) {
if (n[i]) {
if (value + i <= halfValue) {
n[i]--;
DFS(value + i, i);
}
if (flag) break;
}
}
return;
}
int main() {
int cnt = 0;
while (cin >> n[1] >> n[2] >> n[3] >> n[4] >> n[5] >> n[6]) {
sumValue = 0;
for (int i = 1; i <= 6; i++)
sumValue += i * n[i];
if (sumValue == 0) break;
cnt++;
printf("Collection #%d:\n", cnt);
if (sumValue % 2) {//奇数,
cout << "Can't be divided." << endl << endl; //注意有空行
continue;
}
halfValue = sumValue / 2;
flag = false;
DFS(0, 6);
if (flag) {
cout << "Can be divided." << endl << endl;
continue;
}
else {
cout << "Can't be divided." << endl << endl;
continue;
}
}
return 0;
}