csu 1759 Triangle(數學)

Triangle

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 64  Solved: 23
[Submit][Status][Web Board]

Description

給你長度爲1~n n條邊,請你求出有多少種組合方法數可以選出三條邊構成三角形

Input

多組數據輸入輸出(數據組數考慮爲最大可能性)
每組數據輸入一個正整數n,表示有n條長度的邊可供選擇(n<=10000)

Output

每組數據輸出可構成三角形的邊的選擇方法數

Sample Input

2
4

Sample Output

0
1
思路:枚舉三個數中最大的一個數x,剩下的兩個小點的爲y和z,那麼當到達一個新的x的時候,會多出來0+1+...+(n-2)種情況,但是這不是最後的情況,還要減去y==z的x/2-1種情況,然後除以2,因爲y有可能到達之前的z,所以同一個三角形加了兩次

代碼:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std;
long long f[10050];
int main()
{
    int n;
    f[3]=0;
    for(int i=4; i<=10000; i++)
        f[i]=f[i-1]+((i-1)*(i-2)/2-i/2+1)/2;
    while(~scanf("%d",&n))
    {
        if(n<3) printf("0\n");
        else printf("%lld\n",f[n]);
    }
    return 0;
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章