2月はことごとくSRMと用事がぶつかってSRMの頻度が減るため、こちらに出てみました。
ABCは何とか時間内に解いて、EFXで微妙な部分点を取って終了。1ページ目には残れずでした。
http://birthday0410.contest.atcoder.jp/tasks/birthday0410_a
問題
AとBを足すプログラムが3つ与えられる。
これらのプログラムに誤答をさせる入力を作成せよ。
解法
プログラムの詳細AtCoderのサイト参照。
1つめは、入力の終了をA+B!=0で判定しているので、"1 -1"を与えると不正に終了する。
2つめは、絶対値を取る処理をしているため、-2^31を与えると符号反転で値がおかしくなる。
3つめは、負の値を考慮してないので、適当な負の値を突っ込んでおかしくなったものを与えればよい。
void solve() { int f,i,j,k,l,x,y; cin>>x; if(x==1) { _P("1 -1\n"); } if(x==2) { _P("-2147483648 0\n"); } if(x==3) { _P("-10000000 -100000000\n"); } _P("0 0\n"); }
まとめ
さすが普段のSRMやCFとは異なる趣の問題。