PKU2247
先日のコメント欄でのOzyさんの指摘によって幾ばくか短縮が出来ました。
s[6000],i,j=4,A[4]; t(n){return""[n]*s[A[n]];} main(k){ for(*s=1;++i<6e3;){ while(j--)k=t(j)<t(k)?j:k; for(s[i]=t(k);++j<4;)A[j]+=t(j)==s[i]; } for(;scanf("%d",&i),i; printf("The %d%s humble number is %d.\n", i,i/10%10-1?~j?j?j-1? "th":"rd":"nd":"st":"th", s[i-1]) )j=i%10-2; }
ついでに小手先の技も駆使してちょびっと短縮。
長いコードだと、どこでも削れそうな気がしてコードだけじゃなくて、精神も削れるw