KK's Point
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1327 Accepted Submission(s): 439
Problem Description
Our lovely KK has a difficult mathematical problem:He points
N(2≤N≤10
5
)
points on a circle,there are all different.Now he's going to connect the
N
points with each other(There are no three lines in the circle to hand over a point.).KK wants to know how many points are there in the picture(Including the dots of boundary).
Input
The first line of the input file contains an integer
T(1≤T≤10)
, which indicates the number of test cases.
For each test case, there are one lines,includes a integer N(2≤N≤10
5
)
,indicating the number of dots of the polygon.
For each test case, there are one lines,includes a integer N(2≤N≤10
Output
For each test case, there are one lines,includes a integer,indicating the number of the dots.
Sample Input
2 3 4
Sample Output
3 5
Source
Recommend
题意:圆上有n个点,任意两点相连,任意三条线不交于1点,问构成的图上有多少点。
思路:一开始画了5个点,6个点,7个点的情况,然后在画图的过程中发现每个四边形都会贡献一个交点,所以就直接Cn4看n个点的图能有多少四边形即可。注意要用unsigned long long不然会爆,且n<4的时候直接输出n即可。
include <iostream>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
int t;
scanf("%d",&t);
while(t--){
unsigned long long n;
scanf("%llu",&n);
unsigned long long sum=0;
if(n>=4)
sum=n*(n-1)/2*(n-2)/3*(n-3)/4+n;
else
sum=n;
printf("%llu\n",sum);
}
return 0;
}