TOJ 5276圆内交点

Posted kannyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TOJ 5276圆内交点相关的知识,希望对你有一定的参考价值。

描述

现在有一个很大的圆,圆周上有N个互不重合的点,让这N个点两两连线,问连线有多少条,这些连线在圆的内部有多少个交点。

技术分享图片

输入

多组输入,每行输入一个数字表示N(1 ≤ N ≤ 100); 

输出

输出两个数字,第一个数字表示连线的条数,第二个数字表示园内交点的个数。 

样例输入

2
4

样例输出

1 0
6 1

#include<bits/stdc++.h>
double lncom(int n,int m)     //在c语言中,log函数也就是我们通常所说的ln函数,即以e为底的对数函数
{
    double s1=0,s2=0,i;       //s1=n!/m!  s2=1/(n-m)!

    if(m<n/2.0)m=n-m;         //如果上标小于下标的一半,此时m<n-m,令m=n-m,使计算更加快捷

    for(i=m+1;i<=n;i++)       //s1作为分子,从m+1累乘至n
    s1=s1+log(i);

    for(i=2;i<=n-m;i++)       //s2作为分母,从1累乘至n-m
    s2=s2+log(i);

    return s1-s2;
}
double com(int n,int m)
{
    if(n<m)return 0;          //因为n≥m,所以这种情况不存在

    return exp(lncom(n,m));   //把经过处理的组合数还原出来
}
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==1)
            printf("0 0\n");
        else if(n==2)
            printf("1 0\n");
        else if(n==3)
            printf("3 0\n");
        else printf("%.0f %.0f\n",com(n,2),com(n,4));
    }
    return 0;
}


以上是关于TOJ 5276圆内交点的主要内容,如果未能解决你的问题,请参考以下文章

如何检测一个圆在多个圆内?

hdu 5621 KK's Point(数学,推理题)

圆内三角形统计

圆内怎么画标准五角星

Gym - 101617F :Move Away (圆的交点)

Bzoj4561 [JLoi2016]圆的异或并