Ryan's WorkSpace
  • 首页
  • 关于我
  1. 首页
  2. C++
  3. 正文

牛客多校第六场 Problem C Generation I

2018年08月04日 1208点热度 0人点赞 0条评论

内容纲要

题意

略

题解

排列组合题
有$A^m_k$种排列方法,n个位置放k种球有${n-1}\choose{k-1}$种方案
所以答案是
$\displaystyle\sum_{k=1}^{min(n-1,m)}A^m_k {{n-1}\choose{k-1}}$

AC代码

#include<bits/stdc++.h>
#define LL long long
#define MAXN 1000010
#define MOD 998244353
using namespace std;

LL qpow(LL a,LL b)
{
    LL res=1;
    while(b)
    {
        if(b&1) res=res*a%MOD;
        a=a*a%MOD;
        b>>=1;
    }
    return res;
}

LL n,m;
LL inv[MAXN];

int main()
{
    inv[0]=inv[1]=1;
    int T,kase=0;
    scanf("%d",&T);
    for(int i=2;i<MAXN;++i) inv[i]=(MOD-MOD/i)*inv[MOD%i]%MOD;
    while(T--)
    {
        scanf("%lld%lld",&n,&m);
        LL ans=m%MOD,sum=m%MOD;
        LL m1=m%MOD,n1=n%MOD;
        for(int i=1;i<n && i<m;++i)
        {
            sum=sum*(m1-i)%MOD*(n1-i)%MOD*inv[i]%MOD;
            ans=(ans+sum)%MOD;
        }
        while(ans<0) ans+=MOD;
        printf("Case #%d: %lld\n",++kase,ans);
    }
}

相关

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2018年08月04日

Ryan Lee

如果帮助到你,请点击广告,谢谢!

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

如果帮助到你,请点击广告,谢谢!

用户您好!请先登录!
登录 注册
Social Media
Github: ryanlee2014
标签聚合
hustoj php Java JavaScript GitHub C C++ Apache
友链
Pacolyon
Lucien's blog
Slian's DreamWork
卡拉搜索
  • 0
  • 15,321
  • 5,558
  • 0
广告

COPYRIGHT © 2020 Ryan's WorkSpace. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

登录
注册|忘记密码?