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 と Perl と Java と Python で解く AtCoder ABC 165 D 床関数

Last updated at Posted at 2020-05-02

はじめに

AtCoder Beginner Contest 165 が開催されました。
その D問題でちょっとだけ嵌りましたので、復讐復習したいと思います。

今回のお題

AtCoder Beginner Contest 165 D - Floor Function
Difficulty: 505

今回のテーマ、床関数

Ruby

入力例1をエクセル先生で確認します。
20200503.png
丁度 7 で周期していることが分かります。
よくよく考えれば、7 で割っているのでそうなりますので、n が b - 1 以上の場合は関数 f の取り得る最大値、未満の場合は(単純増加ですので)n を関数 f に代入した値が答えとなります。

ruby.rb
a, b, n = gets.split.map(&:to_f)
if n >= b - 1
  puts (a - a / b).floor
else
  puts ((a * n / b).floor - a * (n / b).floor).floor
end
f.rb
a, b, n = gets.split.map(&:to_f)

いつもの癖でgets.split.map(&:to_i)とコーディングしましたので、計算が合わず焦りました。
Ruby は型の変換が必要です。

Python

python.py
a, b, n = map(int, input().split())
if n >= b - 1:
    print(int(a - a / b))
else:
    print(int(a * n / b) - a * int(n / b))

Python は整数と整数の割り算により自動的に実数に変換するようです。

Perl

perl.pl
chomp (my ($a, $b, $n) = split / /, <STDIN>);
if ($n >= $b - 1) {
  print int($a - $a / $b), "\n";
} else {
  print (int($a * $n / $b) - $a * int($n / $b)), "\n";
}

Perl は整数と整数の割り算により自動的に実数に変換するようです。

Java

java.java
import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = Integer.parseInt(sc.next());
        Double b = Double.parseDouble(sc.next());
        Double n = Double.parseDouble(sc.next());
        sc.close();
        if (n >= b - 1) {
            System.out.println((int) (a - a / b));
        } else {
            System.out.println((int) (a * n / b) - a * (int) (n / b));
        }
    }
}

Java は型の変換が必要です。

Ruby Python Perl Java
コード長 138 Byte 129 Byte 169 Byte 517 Byte
実行時間 53 ms 23 ms 2 ms 102 ms
メモリ 14204 KB 9016 KB 4788 KB 35648 KB

まとめ

  • ABC 165 D を解いた
  • Ruby に詳しくなった
  • Python に詳しくなった
  • Perl に詳しくなった
  • Java に詳しくなった
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?