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\n",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\n",1ll*(temp1 - temp2));

        }

    }

   return 0;

} 
View Code
 
     

 


 
     
 

你可能感兴趣的:(RIA)