0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RubyでAtCoder ABC239(A, B, C, D)を解いてみた

Posted at

はじめに

Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC239のA, B, C, Dを解きました。備忘録として解き方をまとめていきたいと思います。

A - Horizon

a-239.rb
h = gets.to_i
puts Math.sqrt(h * (12800000 + h))

B - Integer Division

b-239.rb
puts gets.to_i / 10

C - Knight Fork

c-239.rb
x1, y1, x2, y2 = gets.split.map(&:to_i)
(x1 - 2).upto(x1 + 2) do |i|
  (y1 - 2).upto(y1 + 2) do |j|
    if (Math.hypot(i - x1, j - y1) ** 2).to_i == 5 && (Math.hypot(i - x2, j - y2) ** 2).to_i == 5
      puts "Yes"
      exit
    end
  end
end
puts "No"

解説

x1およびy1から距離が3以上となる部分は考える必要がないため、それ以外の範囲で(x1, y1), (x2, y2)からともに距離が√5となるような点が存在すればYesを出力して終了し、最後までなければNoを出力します。

D - Prime Sum Game

d-239.rb
require "prime"

a, b, c, d = gets.split.map(&:to_i)
puts [*a..b].all?{ |n| [*c..d].any?{ (n + _1).prime? } } ? "Aoki" : "Takahashi"

解説

A〜Bの整数に対して、C〜Dの整数のいずれかとの和が素数となれば青木くんの勝ちなのでprime?メソッドを使って判定することで勝者を求めることができます。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?