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 ABC246(A, B, C)を解いてみた

Last updated at Posted at 2023-06-10

はじめに

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

A - Four Points

a-246.rb
x1, y1 = gets.split.map(&:to_i)
x2, y2 = gets.split.map(&:to_i)
x3, y3 = gets.split.map(&:to_i)
puts "#{x1 ^ x2 ^ x3} #{y1 ^ y2 ^ y3}"

解説

排他的論理和を使うことで、答えを求めることができます。

B - Get Closer

b-246.rb
a, b = gets.split.map(&:to_i)
- d = Math.sqrt(a ** 2 + b ** 2)
+ d = Math.hypot(a, b)
puts "#{a / d} #{b / d}"

解説

求める座標を(x, y)とすると、a : x = b : y = d : 1なので、(x, y) = (a/d, b/d)が成り立ちます。

C - Coupon

c-246.rb
n, k, x = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)

a.map! do |item|
  used_coupon = [item / x, k].min
  k -= used_coupon
  item - (used_coupon * x )
end
puts a.sum - a.max([k, n].min).sum

解説

まず、クーポンを最大限使える商品に対してクーポンを使えるだけ使います。そして、クーポンが余っていれば、その数(min(K, N))だけ割引後の商品の中で価格が高いもの分の価格を除いた商品の価格の総和が答えとなります。

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