编写一个计算N的程序! / K!给定的N和K.in Java-代码日志

时间:2018-10-12 18:07:58

标签: overflow

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,但无法将其转换为long或double。

我是一个初学者-我了解了循环,数组,条件语句。我对方法不了解。

1 个答案:

答案 0 :(得分:0)

使用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--;
        }