Разница между BufferedReader
и Scanner
, вероятно, здесь не будет заметна. Если вы сравните свой код, вы, вероятно, обнаружите, что самая тяжелая его часть - это факторный расчет. Я не могу придумать более быстрый способ его вычисления, но здесь уловка, которая вам, вероятно, не нужна.
Давайте рассмотрим первые несколько факториалов:
- 0! = 1 -> Единица измерения 1
- 1! = 1 -> Единица измерения - 1
- 2! = 2 -> Единица измерения: 2
- 3! = 6 -> Единица измерения - 6
- 4! = 24 -> Единица измерения 4
- 5! = 120 -> Единица измерения 0
Любой факториал, равный 6 или больше, будет представлять собой натуральные целые числа, умноженные на 5! кеш всех опций вместо расчета факториала каждый раз. E.g.:
// The index is the factorial to be calculated, the value is the unit digit:
private static final int[] UNITS = new int[] {1, 1, 2, 6, 4};
private static void fact(int f) {
int unit = 0;
if (f <= 4) {
unit = UNITS[f];
}
System.out.println(unit);
}