2011-06-05 15:08:37 题目地址:http://poj.org/problem?id=1017 就因为两个小错误,导致了无数WA, ~~~~(>_<)~~~~ #include<iostream> using namespace std; int main() { int a[7]; while(1) { int flag=0; int i,ans=0; for(i=1;i<7;i++) { scanf("%d",a+i); flag+=a[i]; } if(!flag) break; ans=a[6]+a[5]+a[4]; // 5*5 a[1]-=a[5]*11; // 4*4 a[2]-=a[4]*5; if(a[2]<0) { a[1]+=a[2]*4; a[2]=0; }// a[2] not enough, a[1] // 3*3 ans+=a[3]/4; a[3]%=4; if(a[3]) ans++; if(a[3]==1) { a[2]-=5; a[1]-=7; if(a[2]<0) { a[1]+=a[2]*4; a[2]=0; } } else if(a[3]==2) { a[2]-=3; a[1]-=6; if(a[2]<0) { a[1]+=a[2]*4; a[2]=0;} } else if(a[3]==3) // WA1:这里直接else,有可能等于3,也可能等于0,+_+ { a[2]--; a[1]-=5; if(a[2]<0) {a[1]+=a[2]*4; a[2]=0; } } // 2*2 if(a[2]>0) { ans+=a[2]/9; a[2]%=9; if(a[2]) ans++; a[1]-=36-a[2]*4; } // 1*1 if(a[1]>0) ans+=(a[1]+35)/36; // WA2: 这里写成 ans+=a[1]+a[1]%36; printf("%d/n",ans); } return 0; }