よって、残りの数字は15未満。やって調べていくと、もうひとつの数字が10であることが判明。この二つしか無いのかどうかを調べる。;これがaccept。よって、Inputは複数あるかも知れないが、ひとつ目の数字は2種類しかないことが判明。Inputも2種類かも知れない。次に、ひとつ目の数字が22の場合と10の場合について、それぞれテストケースの数を調査。後者のテストケースの数が17で、前者は4であることが判明。真偽値を確定させていく。ひとつ目が22こうなった。2-4番目のテストケースに対するanswerは、前者と後者とで異なることはわかっていたから、その部分で真偽値が逆になっているのは当然だろう。一文字目をgetcharした場合、10か22ならば、'1'(49)か'2'(50)が得られることはわかっているから、getchar()&1で場合わけして、上の定数をシフトしながらループをまわす。次のようなコードが考えられる。for(c=getchar()&1?96203:9;c/=2;)puts(c&1?"yes","no");しかし、不運なことに、ひとつ目の数字が22の場合は最後がnoで終わっているため、このループ脱出条件は正しくない。“番人”をどこかに置く必要がある。(bit4に1を追加)として、main(d){for(d=getchar()&1?227275:21;d-1;d/=2)puts(d&1?"yes":"no");}こうだろうか?あまりスマートなコードではない。getcharの返し値を生かしきれていないし、d/=2とd-1と二箇所にわかれているのは冗長だと感じる。ビット&演算子のほうが'+'より優先順位が高ければ、puts("yes\0no"+d&4)のようにして(この場合、定数も4倍しておく必要がある。変更する必要がある)1文字短縮することが出来るのだが。ように書くことが出来るのだが。getcharをgetchに書き換えてみたがダメ。getchar()&1をrand()%2に書き換えてみたけど、乱数はsrandを使わない限り同じ系列の乱数が与えられるのでダメ。乱数という発想を生かすならpid()&1は、面白いけどincludeがいるのでダメ。time(0)&1で、これがacceptされれば2バイト縮まって、tanakhさんのと同じ65byteになるのだけど、2回のInputは連続してやってくるので、このタイミングで秒の境界をまたぐのは至難の業。ひとつアカウントをとって、永久ループとかでサーバーを負荷状態にするものをcommitした直後にこちらをcommitしようかと思ったが、どうやらcommitしたものは処理時間の算出のために処理待ちのqueueのなかに入れられて、ひとつずつ実行されているようである。結局どうやって65byteにしているのかわからない。これがtanakhさんの言う“新機軸”なのか。ブレークスルーもここに来て完敗である。電子書籍になるに至るまでの話ブログちょっとだけ移転のお知らせ時代はまだゲームセンターあらしに追いつかないのかやねうら王、電王戦バージョン提出しました将棋の神様のレーティングはいくつなのか?月別アーカイブはてなブログをはじめよう!yaneuraoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。