加长棒

来源:互联网 发布:河南都市频道网络直播 编辑:程序博客网 时间:2024/06/02 13:19

现在有三根木棒,他们的长度分别是a,b,c厘米。你可以对他们进行加长(不同的木棒可以增加不同的长度),他们总的加长长度不能超过L厘米。你也可以不对他们进行加长。

现在请你计算一下有多少种加长的方式使得他们能构成合法的三角形(面积非0)。

Input
单组测试数据。共一行,包含4 个整数a,b,c,L (1≤a,b,c≤3*10^5, 0≤L≤3*10^5)。
Output
输出答案占一行。
Input示例
1 1 1 2
Output示例

4

思路:隔板法

#include<iostream>using namespace std;typedef long long LL; LL a,b,c,l; LL fun(LL a,LL b, LL c, LL l){    LL result = 0;    for (int z = 0; z <= l; z++)    {        LL x = min(c+z-a-b, l-z);        if (x >= 0)        {            result += (x+1)*(x+2)/2;        }    }    return result;} int main(){    cin >> a >> b >> c >> l;    LL result = (l+1)*(l+2)*(l+3)/6;    result -= fun(a, b, c, l);    result -= fun(a, c, b, l);    result -= fun(b, c, a, l);    cout << result << endl;        return 0;}


原创粉丝点击