問題はこちら
No.207 世界のなんとか - yukicoder
調べるべき数は高々100個なので全て毎回チェックすれば良い
int main(){ int a,b,i,t,f; scanf("%d%d",&a,&b); for(i=a;i<=b;i++){ f=0; if(i%3==0)f=1; //3の倍数かチェック for(t=i;t;t/=10)if(t%10==3)f=1; //3を含むかチェック if(f==1)printf("%d\n",i); } return 0; }
とりあえずちゃちゃっと短くする
a,b;main(p){for(scanf("%d%d",&a,&b);a<=b;a%3&&!p||printf("%d\n",a),a++)for(p=a;p%10-3&&p;p/=10);}
&&を*に、a<=bをb/aにそれぞれ書き換えて短縮
a,b;main(p){for(scanf("%d%d",&a,&b);b/a;a%3*!p||printf("%d\n",a),a++)for(p=a;p%10-3&&p;p/=10);} ||<]