Triangle Counting
分析一下
以八为例子
1 2 3 4 5 6 7 8
以(7,8)为边,就有6 7 8, 5 7 8, 4 7 8 ,3 7 8 ,2 7 8 五种情况;
以(6,8)为边,就有5 6 8, 4 6 8, 3 6 8 三种情况;
以(5,8)为边,就有4 5 8 一种情况;
这时候我们把8算完了,也就是5+3+1种情况
然后算最大边为7的情况4+2种情况
以此类推
就可以知道最大边为n时有(n / 2 - 1)*(n -1 ) / 2种情况
#include<bits/stdc++.h>
using namespace std;
const int Max=1000005;
long long a[Max];
int main()
{
a[3]=0;
int x=0;
for(int i=4;i<=Max;i++)
{
long long int c=(i/2-1),d=(i-1)/2;
a[i] = c*d;
a[i]+=a[i-1];
}
while(cin>>x&&x>=3)
{
printf("%lld\n",a[x]);
}
}