大佬们可以帮我看一下c题吗?
#include <iostream>
#include <vector>
using namespace std;
long long cab(int a, int b){
long long ans = 1;
for(int i = 0; i < b; i++){
ans *= a-i;
ans /= i+1;
}
return ans;
}
int main(){
int N, a, b;
cin >> N >> a >> b;
N = (N-1)*N/2;
int mod = 1e9+7;
long long total = (cab(N, a) * cab(N, b)) % mod;
if(a + b <= N){
long long wu = (cab(N, a) * cab(N-a, b)) % mod;
total = (total-wu+mod) % mod;
}
cout <<total;
return 0;
} 思路就是先找一共有多少种情况,然后减去一条公共边都没有的,就是至少有一条公共边的数量。但是这样答案不对,大佬们可以帮我看一下吗,是思路问题还是代码问题?
查看15道真题和解析