int i_need_use_5 = 0; int ca_number[10]={0}; int fDelMod(int i_mod) { if(ca_number[i_mod]>0) { ca_number[i_mod]--; return 1; }else if(ca_number[3+i_mod]>0) { ca_number[3+i_mod]--; return 1; }else if(ca_number[6+i_mod]>0) { ca_number[6+i_mod]--; return 1; } return 0; } int main() { int i_is_impossible = 0; char ca_input[1001]={0}; char* p_index = ca_input; int i_mod =0; scanf("%s",ca_input); while (p_index[0]!='\0') { if(p_index[0]>='0'&&p_index[0]<='9') { ++ca_number[p_index[0]-'0']; } p_index++; } do{ if( ca_number[0] == 0) { i_need_use_5 = 1; if(ca_number[5] == 0) { i_is_impossible = 1; break; }else { ca_number[5]--; } } i_mod = (ca_number[1]+ca_number[4]+ca_number[7] +(ca_number[2]+ca_number[5]+ca_number[8]+i_need_use_5)*2)%3; switch(i_mod) { case 0: break; case 1: case 2: if(!fDelMod(i_mod)&&!(fDelMod(3-i_mod)&&fDelMod(3-i_mod))) { i_is_impossible = 1; } break; } }while(0); if(i_is_impossible) { puts("impossible"); }else { int i,j; char ca_outputbuf[1024]={0}; int i_index = 0; for(i =9;i >= 0;i--) { for(j = 0;j<ca_number[i];++j) { ca_outputbuf[i_index++] = '0'+i; } } if(i_need_use_5) { ca_outputbuf[i_index++] = '5'; } ca_outputbuf[i_index]='\0'; if(ca_outputbuf[0]=='0') { puts("0"); }else { puts(ca_outputbuf); } } return 0; }
Poj 2969
最新推荐文章于 2017-08-02 18:58:43 发布