エンジニアとしての市場価値を測りませんか?PR

企業からあなたに合ったオリジナルのスカウトを受け取って、市場価値を測りましょう

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 3 years have passed since last update.

[Ruby] AtCoder過去問 C - 100 to 105

Posted at

##はじめに
AtCoder過去問をRubyで解いてみました。
よろしくお願いします。

問題はこちらから確認してください↓

##C - 100 to 105
まずは入力を受け取ります。
その後xの十のくらいまでの二桁をx_tenに代入します。

x = gets.to_i
x_ten = x % 100

僕の考え方は100の位以降の桁は一旦無視して、x_tenを5で割り、その答えをcntに代入、そして余りを4で割り、その答えをcntに足し、余りを3で割り...を1まで繰り返します。

余りを出す計算と割り算の答えをcntに追加していく計算を別にしていますが、上記のことをコードに落とし込んだのが↓です。

x = gets.to_i
x_ten = x % 100
 
five_rem = x_ten % 5
four_rem = five_rem % 4
three_rem = four_rem % 3
two_rem = three_rem % 2
 
cnt = x_ten / 5
cnt += five_rem / 4
cnt += four_rem / 3
cnt += three_rem / 2
cnt += two_rem / 1

十の位までのxを5から順番に割って、割り切れなかった数字を次の数字が割って...という処理で、百のくらいは無視して、5, 4, 3, 2, 1をそれぞれ何個使ってx_tenを作れるかの最小値がcntに入っています。

実際は、5, 4, 3, 2, 1のどれかを一回使うごとに+100がついてきてます。
つまりcntを100倍すれば、下二桁をxに合わせたときの百のくらいが分かります。

xの百の位はx-x_tenで表現できます。
cntの100倍がxの百の位以下であれば1を出力できます。足りない分は100を使えばいいので下二桁に影響を与えずに百の位を合わせに行けます。

逆にcntの100倍がxの百の位を超えてしまうようなら、下二桁を合わせたときに百の位はどう頑張っても、合わせられないので0を出力します。

x = gets.to_i
x_ten = x % 100
 
five_rem = x_ten % 5
four_rem = five_rem % 4
three_rem = four_rem % 3
two_rem = three_rem % 2
 
cnt = x_ten / 5
cnt += five_rem / 4
cnt += four_rem / 3
cnt += three_rem / 2
cnt += two_rem / 1
 
if cnt * 100 <= x-x_ten
  puts 1
else 
  puts 0
end

##おまけ
最後のif文の条件式はcntに100を掛けなくてもcntとx/100を比べてもできましたね。

あと、僕はクソ真面目に解きましたが、xの百の位の数字に5をかけた数字がxの下二桁以上であれば、合計価格がちょうどx円で買い物ができるという法則を見つけられたなら下記のようにより明快な短いコードを書けます。

x = gets.to_i
x_ten = x % 100
n = x / 100
 
if n * 5 >= x_ten
  puts 1
else 
  puts 0
end
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

Comments

No comments

Let's comment your feelings that are more than good

Qiita Advent Calendar is held!

Qiita Advent Calendar is an article posting event where you post articles by filling a calendar 🎅

Some calendars come with gifts and some gifts are drawn from all calendars 👀

Please tie the article to your calendar and let's enjoy Christmas together!

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?