Cat.6(ねころっく)

脆弱性のお金でご飯が食べたい

AtCoder Beginner Contest 113

f:id:reinforchu:20181106122251p:plain

●新しいことを始めた

 AtCoderはじめてみました。早速、AtCoder Beginner Contest 113に参加してみた結果、「これが、競プロってぇやつかぁ……」という洗礼を受けました。開始即取りかかるやつなんですね。呑気にお茶してたら1時間近く遅刻参加となり、残念な結果になりました。A問とB問は挑戦できたので上げておきます。

abc113.contest.atcoder.jp 問題文はコンテスト開催当時のものを引用しております。

 すうがく、だいぶ苦手なので解法や数式の書き方は定石ではないと思われます。競プロを通じて、プログラミング・アルゴリズム・数学が身につくといいなぁと思っておりますです。言語は、PHP, C#, Javaのいづれかでやる予定です。

 なお、はてなブログの都合上、コード部分は勝手に脚注になったりしないようにスペース入れたりしてます。

 追記:コード貼り付けるとだめっぽいので一旦スクリーンショットで。

 

●A - Discount Fare

A 駅と B 駅を結ぶ鉄道があり、運賃は X 円です。

また、B 駅と C 駅を結ぶバスがあり、運賃は Y 円です。

joisinoお姉ちゃんは、A 駅から B 駅まで鉄道で移動し、B 駅から C 駅までバスで移動すると、バスの運賃が半額になる特別券を手に入れました。

この特別券を用いたとき、A 駅から C 駅まで移動するのにいくらかかるか求めてください。

 文章だとややこしそうですが、次の式で求まります。

  1.  (運賃Y / 2) + 運賃X

◆a.php AC

<?php
$stdin = trim(fgets(STDIN));
$exp = explode(" ", $stdin);
echo ($exp[1] / 2) + $exp[0];

 

●B - Palace

 ある国で、宮殿を作ることになりました。

この国では、標高が x メートルの地点での平均気温は T−x×0.006 度です。

宮殿を建設する地点の候補は N 個あり、地点 i の標高は Hi メートルです。

joisinoお姫様は、これらの中から平均気温が A 度に最も近い地点を選んで宮殿を建設するようにあなたに命じました。

宮殿を建設すべき地点の番号を出力してください。

ただし、解は一意に定まることが保証されます。

 絶対値をとった時の最小値が、設問の解答だと思いましたが、sampleは通るもののWAでした。

  1. 平均気温 = 入力T - (標高 * 0.006)
  2. 平均気温の絶対値をとった最小値

 ◆b.php WA(01, 04, 05, 07, 08, 09, 10)

f:id:reinforchu:20181106130248p:plain

 締め切り3秒前に提出したら、途中書いてたテストコードを出してしまい、0ptという悲しい結果に。コンテストが終わっても、提出はできるようだったので提出しましたが、WAでしたー。さらに残念。

  abs()の$array[1][$key]部分は、ちゃんちゃらおかしいし、A度との絶対値じゃないとあかんやんと、記事を書いてて気づいたので、直したら通った。

 

◆b-2.php AC

f:id:reinforchu:20181106130201p:plain

 くやしみが深い。

 

●結果

 2303位で100pt。

 レート「3」つきました。やったねっ!!!!!111111()

 

●近況

 がんばんないと。

 最近は、PHPのpassword_hash()とBCryptに関して調べてます。記事も下書きで書いてますが、近日中に2本くらい出せたらいいなーなどと。