Der AtCoder Beginner Contest 165 wurde abgehalten. Ich bin ein wenig in diesem D-Problem stecken geblieben, deshalb würde ich gerne ~~ Rache ~~ überprüfen.
AtCoder Beginner Contest 165 D - Floor Function Difficulty: 505
Dieses Thema, Bodenfunktion Ruby Überprüfen Sie das Eingabebeispiel 1 mit Mr. Excel. Sie können sehen, dass der Zyklus genau ** 7 ** ist. Wenn Sie sorgfältig darüber nachdenken, liegt es daran, dass es durch ** 7 ** geteilt wird. Wenn also n b -1 oder mehr ist, ist der Maximalwert, den die Funktion f annehmen kann, und wenn es kleiner als ist, ist n eine Funktion (weil es eine einfache Erhöhung ist). Der f zugewiesene Wert ist die Antwort.
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)
Ich habe gets.split.map (&: to_i)
wie gewohnt codiert, war also ungeduldig, weil die Berechnung nicht übereinstimmte.
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))
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";
}
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));
}
}
}
Ruby | Python | Perl | Java | |
---|---|---|---|---|
Codelänge | 138 Byte | 129 Byte | 169 Byte | 517 Byte |
Ausführungszeit | 53 ms | 23 ms | 2 ms | 102 ms |
Erinnerung | 14204 KB | 9016 KB | 4788 KB | 35648 KB |
Recommended Posts