問題と解答が無い状態で更新しておりましたので追記しました。(Thu Jul 9 11:39:17 JST 2009) どうも、天下一プログラマーコンテスト実行委員会の isono です。 告知よりも、少し遅れましたが天下一プログラマーコンテスト Web 予選 第1回の概況をお伝えします。予想をはるかに上回る回答数につき集計システムを改修しながらお送りしています。 まずは問題の開示と機械集計の結果から。
第1問 問題:2001年1月1日から3000年12月31日までの間に日曜日は何回あるか。 うるう年については以下のルールに留意せよ。 1. 西暦年が4で割り切れる年はうるう年 2.ただし、西暦年が100で割り切れる年は平年 3. ただし、西暦年が400で割り切れる年はうるう年 なお、2001年1月1日は月曜日である。 ※日付・時刻用ライブラリの使用は減点対象とする。 答え:52177 のべ回答数:55 最速回答:2009/7/5 1:37 最終回答:2009/7/5 23:54 第2問 問題:次の10文字からなる数字列において、連続する4桁の数字を "8710", "7104", ... のように7個取り出すことができる。 8710410111 では、次の数字列から連続する4桁の数字を取り出したとき、3の倍数はいくつあるか。 87104101110321051103211610410132991111171141151013211110232104117109971103210111810111011611544321051163298101991111091011153211010199101115115971141213210211111432111110101321121011111121081013211611132100105115115111108118101321161041013211211110810511610599971083298971101001153211910410599104321049711810132991111101101019911610110032116104101109321191051161043297110111116104101114443297110100321161113297115115117109101329710911111010332116104101321121111191011141153211110232116104101321019711411610444321161041013211510111297114971161013297110100321011131179710832115116971161051111103211611132119104105991043211610410132108971191153278971161171141013297110100327897116117114101115327111110032101110116105116108101321161041011094432973210010199101110116321141011151121019911632116111321161041013211111210511010511111011532111102321099711010710511010032114101113117105114101115321161049711632116104101121321151041111171081003210010199108971141013211610410132999711711510111532119104105991043210510911210110832116104101109321161113211610410132115101112971149711610511111046 答え:402 のべ回答数:84 最速回答:2009/7/5 0:47 最終回答:2009/7/5 23:54 ※問題の表示に意図しない改行が含まれており不正解になった方は解釈の違いを加味いたします 第3問 問題:日本には、 1円、5円、10円、50円、100円、500円、1000円、2000円、5000円、10000円 の硬貨および紙幣がある。 これらをつかって10円をつくる方法は、 1. 10円 × 1 2. 5円 × 2 3. 5円 × 1 + 1円 × 5 4. 1円 × 10 の4通りある。 では、10000円をつくる方法は何通りあるか。 答え:24597373439 のべ回答数:54 最速回答:2009/7/5 1:59 最終回答:2009/7/6 0:20(終了時間を1時間延長しました)
※のべ回答数なので複数回答いただいている分も含んでいます ※回答時間は審査基準ではありませんので参考までに 第2問の回答数が最も多く、第1問と第3問が僅差という興味深い結果となっています。両方ループで解決してしまいそうな問題だからでしょうか? 3問とも回答いただいて、3問とも正解をにたどり着いている方が想定数を大幅に上回っています。コードの査読の結果は未だ全容は出ていませんので、ここでは詳しい結果には触れていませんが、内容を加味して工夫されている方に加点して差をつけるしかありません。 現在審査員が全力で審査を行っています。缶詰審査中に上がったつぶやきの中からいくつか抜粋しておきますので雰囲気だけでも。
・正解者は全員通してあげたい… ・レベル高すぎですね…採点するのがおこがましいです ・C/C++の人はやっぱり実行効率を極限まで考える傾向があるなぁ・・・ ・考え方は良いのにミスで回答が不正解の人、通したいけど全問正解チーム多いからどうしよう… ・入力がメモリに乗り切らない場合とかまで考えてる人がいるよ ・狭いところで勉強しているから足を引っ張ってる人とかもったいないなぁ… ・Perl が居ないがーん! 昔は Perl で cgi だった領域はPHPに、ゲーム作るならC/C++だし… (選択言語の集計もあとでやってみます)
第1回の結果はレベルも競争率も想定以上になってしまっています。正解と工夫した点のアピールの掛け算が攻略ポイントとなるでしょう。あえてLLを選択して工夫を最大限アピールしてみる作戦もありかもしれません。 全体として問題は決して簡単すぎることは無いと思うのですが、2回目以降の問題レベルはもう少し引き上げるかもしれません。 第2回は来週 7/15 に開催します。第1回目に参加された方も、されなかった方もふるってご参加ください。新規エントリーは 7/14 18:00 まで受け付けます。 なお、既にエントリー済みの方(第1回目参加者を含む)は改めてエントリーしなくてもそのまま2回目以降参加いただけます。 Web予選は24時間ですが本戦では限られた時間で競っていただきますので結果がどのように変化するのかも注目です。 最後にお詫びとお礼を。 Web予選第1回ではメールの不達などご迷惑をおかけしました。開催時間が1時間程遅れた方考慮して終了時間を1時間延長しました。(延長に関しては特に大きな影響は無かったようですが…) 参加者の熱き闘志に応える為、我々は努力を惜しみません。 今後とも稚拙な部分はあるかと思いますがご了承ください。 本大会はイベント開催になれた人材ではなく運営も採点もKLab技術者が手探りお送りしております。(この方法がプログラマーの気持ちを一番理解できる最善の方法であると信じています) 本戦で皆様にお会いできる事を楽しみにしております。