情報系音ゲーマーの手記

Splatoon2とかDDRとか

プログラミングコンテストに初参加した話~後編~

前回(↓)の続きです。 

eiki1253.hatenablog.com

 

 

無事に第1問を解き終わった僕であったが、第2問において驚異のガイジ力(ガイジリョク)を見せつけるのであった…

 

 

 第2問

入力3つ(a,b,c)あったときにaからbまでの間にcで割り切れる数いくつあるか出力してや。

例:入力"10 15 5" 出力"2"

 

問題文を読まないガイジ僕

「せや!while文でぶん回して商を1つづつ出力したろ!彡(^)(^)」

※入力が"10 15 5"だったら"2 3"になると思ってた

 

その結果爆誕したのがこちらのプログラム

f:id:eiki1253:20161205115135p:plain

内容としては入力で受け取った数字3つを格納し、while文で回して割り切れたら出力、Aを1足す、という感じ。

 

もちろん不正解である。

 

 そしてこのアホすぎる間違いに気づかないまま時間は刻々と過ぎてゆき

 

2016/12/04 PM10:40コンテスト終了

 

コンテスト終了後、問題文を読み返す僕「なんでこれ出力こうなるんやろか(例を見ながら)…アッ(逝去)」

 

こうしてデビュー戦をなんとか致命傷で済ませた僕は復習を開始、

こんなプログラムが出来上がった。

f:id:eiki1253:20161205120017p:plain 

 

提出(終わった後でも評価してもらうことは可能)したところ、答え自体はあっていたが実行時間の制限に引っかかってしまっていた模様。

特にnumとAを足し算していくあたり頭悪い。

 

確かに"走れ低速の Python華撃団"(©️ゲキテイ&先輩)と言われるだけはある。

※実装の仕方が悪いだけでPython君は何も悪くないことが後に判明。

 

 

その後、解説を確認。

f(n)を0からnまでの中で、割り切れる数の個数と設定すると、f(B)-f(A-1)で書けるらしい。

ただし、A=0のときはf(-1)になるので注意な^^。とのこと。

 

最終的に次のようになった。

f:id:eiki1253:20161205123427p:plain

 

このプログラムだとバッチリ実行時間制限未満で動いた。

 

初出場でしたが頭柔らかくなる感じがMAXでスンゴイ(ボキャ貧)

こんな感じで初心者でも楽しめるプログラミングコンテストでした。

 

定期的に開催されてるっぽいのでまた参加してみたいと思います。

他の問題は割愛するので興味ある人は検索してみたりしてね。

 

終わり。