#include <stdio.h>
#include <string.h>
int a[7],sum,b[100],n;
bool dp[60001];
int main()
{
int i, j, k, t = 1, x;
while (scanf ("%d%d%d%d%d%d", &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]) != EOF)
{
if (a[1]+a[2]+a[3]+a[4]+a[5]+a[6]==0) break;
printf("Collection #%d:/n", t++);
sum=0;
n=0;
for (i=1;i<=6;i++)
{
sum+=a[i]*i;
k=0;
b[n++]=k*i;
k++;
x=0;
while (x+k<a[i])
{
b[n++]=k*i;
x+=k;
k=k*2;
}
if (a[i]>x) b[n++]=(a[i]-x)*i;
}
if (sum%2)
{
printf ("Can't be divided./n/n");
continue;
}
memset(dp,false,sizeof(dp));
dp[0]=true;
for (i=0;i<n;i++)
for (j=sum/2;j>=b[i];j--)
if (dp[j-b[i]]) dp[j]=true;
if(dp[sum/2]) printf ("Can be divided./n/n");
else printf ("Can't be divided./n/n");
}
return 0;
}
POJ 1014 Dividing
最新推荐文章于 2021-08-26 12:59:36 发布