洛谷P2181 对角线题目 Java解题

2022/2/5 1:16:42

本文主要是介绍洛谷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);
    }
}



这篇关于洛谷P2181 对角线题目 Java解题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程