编程语言
首页 > 编程语言> > 洛谷P2181 对角线题目 Java解题

洛谷P2181 对角线题目 Java解题

作者:互联网

题目描述:

输入格式和数据大小:

题解:

一条边是由2个顶点组成,每个交点需要2条边,即需要4个顶点组成一个交点,所以问题转化为计算n个顶点中有多少个4个顶点的组合。使用组合公式即可求出,此时可以化简组合公式为n * (n-1) / 2 * (n-2) / 3 * (n-3) / 4 ,但数据使用int类型范围过小,使用long也会出现部分数据不通过的情况,所以使用麻烦的BigInteger。

BigInteger不是基本数据类型,所以加减乘除不能使用+、-、*、/这些运算符号,而是使用add()、subtract()、mutiply()、divide()这四种方法代替。

代码如下:

import java.math.BigInteger;
import java.util.Scanner;

// P2181 对角线
public class Main{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        BigInteger n = scanner.nextBigInteger();
        scanner.close();
       
        BigInteger number1 = new BigInteger("1");
        BigInteger number2 = new BigInteger("2");
        BigInteger number3 = new BigInteger("3");
        BigInteger number4 = new BigInteger("4");
        n = n.
                multiply(n.subtract(number1)).divide(number2).
                multiply(n.subtract(number2)).divide(number3).
                multiply(n.subtract(number3)).divide(number4);
        System.out.println(n);
    }
}

标签:BigInteger,P2181,Java,divide,new,scanner,洛谷,subtract,Scanner
来源: https://blog.csdn.net/weixin_52186516/article/details/122786624