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 |
#include<iostream> #include<cstdio> using namespace std; const int maxn=1000010; long long num[maxn]; int main(){ //freopen("input.txt","r",stdin); num[3]=0; for(long long i=4;i<maxn;i++) //这里不能用int,否则UVa上WA num[i]=num[i-1]+((i-1)*(i-2)/2-(i-1)/2)/2; int n; while(cin>>n){ if(n<3) break; cout<<num[n]<<endl; } return 0; }