HUST_ACdream区域赛指导赛之手速赛系列(1)(2)D——数学——Triangles

Description

已知一个圆的圆周被  个点分成了 N 段等长圆弧,求任意取三个点,组成锐角三角形的个数。

Input

多组数据。

每组数据一个N (N ≤  1000000)。

Output

对于每组数据,输出不同锐角三角形的个数。

Sample Input

3
4
5

Sample Output

1
0
5
大意:数学推导,分成奇数点偶数点讨论
偶数时:


只要两个相减就是答案
奇数时同理:

还有1ll*涨姿势用来变成long long 形式
#include<cstdio>
#include<cstring>
int main()
{
    long long n;
    while(~scanf("%lld",&n)){
        if(n % 2 == 1){
            long long temp1 = 1ll*n*(n-1)*(n-2)/6;
            long long temp2 = 1ll*n*(n-1)*(n-3)/8;
            printf("%lld
",1ll*(temp1 - temp2));
        }
        else {
            long long temp1 = 1ll*n*(n-1)*(n-2)/6;
            long long temp2 = 1ll*n*n*(n-2)/8;
            printf("%lld
",1ll*(temp1 - temp2));
        }
    }
   return 0;
} 
View Code




 
原文地址:https://www.cnblogs.com/zero-begin/p/4434384.html