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 |
附代码(帮忙看一下吧)In Reply To:这样做可以吗??? Posted by:me at 2005-07-05 17:17:04 #include<stdio.h> void outn(long k) { printf("Collection #%ld:\nCan't be divided.\n\n",k); } void outy(long k) { printf("Collection #%ld:\nCan be divided.\n\n",k); } long make(long a[],long a1[],long a2[]) { long n1=0,n2=0,i,t; for(i=1;i<7;i++)a1[i]=a2[i]=0; for(i=6;i;i--) if(a[i]) if(n1>n2) { t=(n1-n2)/i; if(t>a[i])t=a[i]; a2[i]=t; a[i]-=t; a2[i]+=(a[i]+1)/2; a1[i]=a[i]/2; n1+=a1[i]*i; n2+=a2[i]*i; } else { t=(n2-n1)/i; if(t>a[i])t=a[i]; a1[i]=t; a[i]-=t; a1[i]+=(a[i]+1)/2; a2[i]=a[i]/2; n1+=a1[i]*i; n2+=a2[i]*i; } if(n1<n2) { for(i=1;i<7;i++) {t=a1[i];a1[i]=a2[i];a2[i]=t;} return n2-n1; } else return n1-n2; } int main() { long a[7]={0},a1[7],a2[7],n=0,i,m,k=0; while(1) { k++; n=0; for(i=1;i<7;i++) { scanf("%ld",&a[i]); n+=a[i]*i; } if(!n)return 0; if(n%2){outn(k);continue;} n=make(a,a1,a2); if(n==6){outn(k);continue;} if(!n){outy(k);continue;} if(n==4) { m=0; for(i=6;i>2;i--) if(a1[i]>a2[i-2])m+=a2[i-2]; else m+=a1[i]; if(m){outy(k);continue;} m=0; for(i=6;i>2;i--) if(a1[i]>a2[i-1])m+=a2[i-1]; else m+=a1[i]; if(m>1){outy(k);continue;} else{outn(k);continue;} } m=0; for(i=6;i>1;i--) if(a1[i]>a2[i-1])m+=a2[i-1]; else m+=a1[i]; if(m)outy(k); else outn(k); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator