HDU 5621 KK's Point(组合数学)

来源:互联网 发布:旅游数据库概念模型 编辑:程序博客网 时间:2024/04/30 23:24

Description
我们可爱的K遇到了一道数学难题:他在一个圆上点下了互不重合的N(2≤N≤10^5)个点,现在他要将这N个点两两相连(圆内没有三条线交于一个点的情况),K想知道图形中一共有多少个交点(包括边界上的点)
Input
第一行一个数T(1≤T≤10),表示数据组数。
接着T行,每行一个整数N(2≤N≤10^​5​​ ),表示圆上的点数。
Output
对于每一个数据输出一个整数,表示交点数
Sample Input
2
3
4
Sample Output
3
5
Solution
除圆上的n个点之外,圆内每个交点都是由圆上四个点所连成的两条交叉的线段形成,故总点数是C(n,4)+n
Code

#include<cstdio>#include<iostream>using namespace std;typedef unsigned long long ull;int main(){    int T,n;    scanf("%d",&T);    while(T--)    {        scanf("%d",&n);        if(n<4)printf("%d\n",n);        else         {            ull ans=1ull*(n-3)*(n-2)/2*(n-1)/3*n/4;            printf("%I64d\n",n+ans);        }    }    return 0;}
0 0
原创粉丝点击