HUST_ACdream区域赛指导赛之手速赛系列(1)(2)D——数学——Triangles
Description
已知一个圆的圆周被 N 个点分成了 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; }