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圆内交点的主要内容,如果未能解决你的问题,请参考以下文章