1
0

More than 3 years have passed since last update.

javaでAtCoder Beginner Contest 150を解く

Last updated at Posted at 2020-01-10

AtCoder Beginner Contest 150お疲れ様でした!
公式ページ

残念ながらまたUnratedですね・・・

GitHub.comのアカウントを作った記念に、ちょっと前にはじめたAtCoderのコードもコンテストが終わった後にコミットしてみました。こちら
さらに、解説記事も書いてみます。

競技プログラミングは最近はじめて言語も基本的にjavaくらいしか書けないのでjava使ってやってます。
(競プロでPythonとかC使ってる人多いのはなぜなのでしょうか・・・)

問題A

掛け算して比較する問題。
特に解説は不要かと思います。

問題B

ABCが順序通りに並んでいる数を調べる問題。
特に性能も気にしなくてもよさそうだったので、シンプルに3つとってきて一致するかどうかを調べました。

問題C

もう少しいい方法はあると思いますが・・・
自分は2つの数列を「何番目に大きい数字を使っているか」で変換し、2つの数列を比較し、桁ごとに対応する階乗の値をかけて算出しました。

あまりうまく文字で説明できません。コード見た方が分かりやすいかと思います。

問題D

最小公倍数的な問題。なぜ不正解か分かりません!

基本方針としては
- 最小公倍数算出
- 与えられたm+最小公倍数/2を最小公倍数で割り算した値を出力

で行いました。
ただ、数列が2/4/6などの場合に答えは0となります。なぜなら、「2の何乗か」というのがあっていないため。
2*(p+0.5)は2の倍数ではありませんが、4*(p+0.5)は2の倍数です。このように、数列の数全ての2の何乗かというのがそろっている必要があります。

が、不正解。この問題に苦戦していて終わりました・・・
https://github.com/ko-flavor/atcoder-java/blob/master/atcoder/src/abc/abc150/MainD.java

今日はいくら考えても分からなかったので、また後日見てみたいと思います!

(追記)
プログラムにバグを無事発見し、修正してACになりました。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0