Problem G
Triangle Counting
Input: Standard Input
Output: Standard Output
You are given n rods of length 1, 2…, n. You have to pick any 3 of them & build a triangle. How many distinct triangles can you make? Note that, two triangles will be considered different if they have at least 1 pair of arms with different length.
Input
The input for each case will have only a single positive integer n (3<=n<=1000000). The end of input will be indicated by a case with n<3. This case should not be processed.
Output
For each test case, print the number of distinct triangles you can make.
Sample Input Output for Sample Input
5 8 0 | 3 22 |
Problemsetter: Mohammad Mahmudur Rahman
题意:1..n构成三角形的数目
分析:先做出n的,在做n+1,递推
代码:
#include<iostream>//数学M
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int MAXN=1000050;
long long x[MAXN];
long long xx[MAXN];
void init()
{
int i;
x[3]=0;xx[3]=0;
for(i=4;i<MAXN;i++)
{
x[i]=x[i-1]+i/2-1;
xx[i]=xx[i-1]+x[i];
}
}
int main()
{
int n,i;
// freopen("../../out.txt","w",stdout);
init();
while(scanf("%d",&n)==1)
{
if(n<3)break;
printf("%I64d\n",xx[n]);
}
return 0;
}