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 |
Re:改过的AC精简版(C++)In Reply To:改过的AC精简版(C++) Posted by:majia001 at 2006-08-20 15:40:47 > #include <cstdio> > #include <algorithm> > using namespace std; > char a[1010],c; > > sm(){int i,sum=0;for(i=0;a[i];i++)sum+=a[i]-'0';return sum;} > pt(){ > int j,t; > t=sm(); > if(t%3==0){ > if(t){for(j=strlen(a)-1;~j;j--)printf("%c",a[j]);puts("");} > else puts("0"); > return 1; > }else return 0; > } > void pe(){puts("impossible");} > int main(){ > int i,j,k,m,sum,len; > scanf("%s",a);len=strlen(a);sort(a,a+len); > if(a[0]=='0'){ > if(pt())return 0; > for(i=1,sum=sm()%3;a[i]&&(a[i]-'0')%3!=sum;i++); > if(!a[i]){ > for(;;){ > for(m=1;(a[m]-'0')%3==0;m++); > for(j=m;a[j];j++)a[j]=a[j+1]; > if(pt())return 0; > } > } > for(j=i;j<len;j++)a[j]=a[j+1]; > pt();return 1; > }else{ > for(i=0;a[i]&&a[i]!='5';i++); > if(!a[i]){pe();return 0;} > c=a[i];a[i]=a[0];a[0]=c; > sort(a+1,a+len); > if(pt())return 0; > for(i=1,sum=sm()%3;a[i]&&(a[i]-'0')%3!=sum;i++); > if(!a[i]){ > for(m=1,k=0;a[m]&&((a[m]-'0')%3==0||(a[m]-'0')%3==5%3);m++)if((a[m]-'0')%3==5%3)k++; > if(k==1){pe();return 1;} > while(1){ > for(m=1;a[m]&&(a[m]-'0')%3==0;m++); > if(!a[m]){pe();return 0;} > for(j=m;a[j];j++)a[j]=a[j+1]; > if(pt())return 1; > } > } > for(j=i;j<strlen(a);j++)a[j]=a[j+1]; > pt();return 1; > } > } 典型的中国人编程风格,逞匹夫之勇,玩小聪明,代码写得可读性不好! Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator