您的位置:首页 > 其它

POJ 2969 Divisibility by 15

2014-04-09 17:20 155 查看
本来是想当dp题来写的, 但是写了之后发现果然还是贪心好写啊...

结果正常的程序就写成这样了233

/*POJ 2969 Divisibility by 15*/
#include <stdio.h>
#include <stdlib.h>
#define For(i,m,n) for(i=(m);i<(n);i++)

int cnt[10];

main()
{
int i=0, j, flag=0, sum=0, v=0, s;
char ch;
while(scanf("%c",&ch)!=EOF&&ch!='\n') cnt[ch-'0']++, sum+=ch-'0';
sum%=3;
if(!cnt[0]&&!cnt[5]) puts("impossible");
else{
if(!cnt[0]) cnt[5]--, flag=1;
if(sum) {
s=sum;
if(cnt[sum]+cnt[sum+3]+cnt[sum+6]==0) s=3-sum;
for(i=s;i<9;i+=3){
if(cnt[i]) cnt[i]--, sum=(sum+3-s%3)%3;
if(cnt[i]&&sum) cnt[i]--, sum=0;
if(!sum) break;
}
}
For(j,1,10) v+=cnt[j];
if(v==0||i>=9){
if(cnt[0]) puts("0");
else puts("impossible");
exit(0);
}
for(i=9;i>=0;i--){
j=cnt[i];
while(j--) printf("%d",i);
}
if(flag) printf("5");
puts("");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: