“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】

题目传送门


“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】_第1张图片


题解

  • 每增加一条线,就可以和之前的n-1条线相交。
  • 那么答案即是 ∑ i , i ∈ [ 1 , n ] \sum{i},i∈[1, n] i,i[1,n],直接前 n n n 项和 n ∗ ( n − 1 ) / 2 n*(n-1)/2 n(n1)/2
  • 数据范围很大,使用JAVA大数或者Python

AC-Code

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

public class Main {
    public static void main(String[] args) {
        BigInteger t, n;
        Scanner sc = new Scanner(System.in);
        t = sc.nextBigInteger();
        while (!t.equals(BigInteger.ZERO)) {
            n = sc.nextBigInteger();
            System.out.println(n.multiply(n.subtract(new BigInteger("1"))).divide(new BigInteger("2")));
            t = t.subtract(new BigInteger("1"));
        }
    }
}

for i in range(int(input())):
    n = int(input())
    print(n * (n - 1) // 2)

你可能感兴趣的:(“科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——H.直线【JAVA大数 | Python】)