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

京公网安备 11010502036488号