题目描述
给定一个n,问在凸正2n+1边形中顶点在凸正2n+1边形上的不同的锐角三角形有多少个,多边形顶点标号为A1,A2,A3,A2n+1,两个三角形不同当且仅当顶点标号不同。
程序输入说明
多组数据,第一行输入数据组数T (1 <T< 100000),后面T行,每一行给出一个n (1<n< 100000)。
程序输出说明
共输出T行,每一行输出不同锐角三角形的个数。
程序输入样例
2
2
3
程序输出样例
5
14
思路:
求出能切割成的所有三角形个数,再减去钝角和直角三角形个数,剩下的就是题目需要的锐角三角形个数。将正n边形看作由圆上n个可将圆等分成圆弧的点连成,可分成三角形个数为C(n,3),若在圆上任取一点,即C(n,1),再从半圆上取两点,即C(n/2,2),则所得三角形必为钝角三角形或直角三角形,由此思想最终可整理成一个公式:
C(n,3)-C(n,1)*C(n/2,2)
#include <bits/stdc++.h> //万能头文件
using namespace std;
int main(int argc, char** argv) {
int t;
cin>>t;
long long n;
while(t--)
{
cin>>n;
n=2*n+1;
long long x=(n*(n-1)*(n-2))/3/2/1-n*((n/2)*(n/2-1)/2/1);
cout<<x<<endl;
}
return 0;
}
long long全称long long int ,超长整型。