Напишите программу, которая рассчитывает N!/ К!для заданных N и K. в Java - проблема переполнения - PullRequest
0 голосов
/ 12 октября 2018
import java.util.Scanner;

public class CalculateAgain {

    public static void main (String[] Args) {

        Scanner input = new Scanner(System.in);
            long N = input.nextLong();
            long K = input.nextLong();
            double result = 1;
        while ( N > K) {
            result*=N;
            N--;
        }
            System.out.printf("%.0f", result);

    }
}

Я не могу напечатать большие факториальные числа.Я пытался с переменным результатом так долго, но когда я println, я получаю неправильный результат.

Я также пытался использовать BigDecimal, но я не могу привести его к длинному или двойному.

Я довольно новичок - я выучил циклы, массивы, условные выражения.У меня нет понимания методов.

1 Ответ

0 голосов
/ 12 октября 2018

Используйте import java.math.BigInteger;

попробуйте этот способ, после сканера.Предполагая, что я использую BigInteger, вы можете изменить в соответствии с вашими требованиями.

  int n = Integer.parseInt(scanner.nextLine());
  int k = Integer.parseInt(scanner.nextLine());

  BigInteger result = new BigInteger("1");
        int range = n - k;
        for (int i = range; i > 0; i--) {
            result = result.multiply(new BigInteger(String.valueOf(n)));
            n--;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...