| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
不知道哪错了,给点建议吧#include <stdio.h>
#include <math.h>
#include<iostream>
using namespace std;
long c[120];
long V ;
int f[60000];
int goon = 1;
#define max(a,b) (a)>(b)?(a):(b)
void zero(int j)
{
for(int v = V;v >0;v--)
{
if(v >= c[j]) f[v] = max(f[v],f[v-c[j]]+c[j]);
if(f[v] == V) {
goon = 0;
break;
}
}
}
int main()
{
int m = 1;
int k;
int t ;
int n[6];
while(1)
{
goon = 1;
scanf("%d%d%d%d%d%d",&n[0],&n[1],&n[2],&n[3],&n[4],&n[5]);
V = (n[0] + n[1]*2 + n[2]*3 + n[3]*4 + n[4]*5 + n[5]*6);
if(!V)break;
if(V%2) goon = -1;
else{
int j = 0;
V = V/2;
memset(f,0,sizeof(f));
for(int i = 0;i < 6 && goon;i++){
t = log(n[i]*1.0)/log(2.0);
k = 1;
if(n[i] > 0) {
c[j] = i+1;
zero(j);
j++;
}
while(goon && k < t){
c[j] = c[j-1]*2;
zero(j);
k++;
j++;
}
if(n[i]) c[j] = (i+1)*(n[i]-2*c[j-1]/(i+1)+1);
if(c[j]){
zero(j);
j++;
}
}
}
printf("Collection #%d:\n",m);
if(goon) printf("Can't be divided.\n\n");
else printf("Can be divided.\n\n");
m++;
}
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator