大佬们可以帮我看一下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;
}
思路就是先找一共有多少种情况,然后减去一条公共边都没有的,就是至少有一条公共边的数量。但是这样答案不对,大佬们可以帮我看一下吗,是思路问题还是代码问题?
全部评论
如果是思路问题,那肯定代码也有问题,如果思路没有问题,那就一定是代码写的有问题
1 回复 分享
发布于 2021-11-27 14:59
公式没问题,组合数计算的问题,1000的阶乘肯定整数溢出,同余也不能直接做除法,因而这个地方需要求逆元,具体做法看其他人代码就好了
1 回复 分享
发布于 2021-11-27 15:56

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
无一技之长怎么办:别去右边,售前,实施,需求分析一起,这是把人当牛马用啊,快跑,这些岗位天花板很低的
点赞 评论 收藏
分享
Boss上联系了很多都已读不回,是什么问题大佬帮看看
扎哇精神病人:老哥 你本科的时间是不是写错了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务