https://ac.nowcoder.com/acm/contest/69408/L
Dormitory Number
新生赛好难,水一篇题解
首先三角形有一个特性——三条边不共点,所以我们只要在所有边中选3条,再减去共点的情况就好了

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = unsigned long long;

ll get(int x) {
    ll ans = 1;
    for (ll i = 1; i <= 3; i++) {
        ans = ans * (x - 3 + i) / i;
    }
    return ans;
}

int main()
{
    int t;cin >> t;
    int a,b,c;
    while(t--) {
        cin >> a >> b >> c;
        ll ans = get(a+b+c+3);
        if(a>=1) ans -= get(a+2);
        if(b>=1) ans -= get(b+2);
        if(c>=1) ans -= get(c+2);
        cout << ans << endl;
    }
    return 0;
}

注意一下,long long会爆,所以要用unsigned long long