牛客网暑期ACM多校训练营(第六场) C Generation I(组合数学, 逆元)
中链接:
https://www.nowcoder.com/acm/contest/144/C
题意:
给定n个集合, 要求用n次操作, 第i次操作用1~m中一个数填入 i ~ n个集合中, 集合无序而且元素不重复。
分析:
因为要填入i ~ n个集合中, 所以考虑最后一个集合, 其实每个数只有第一次出现才是有效的, 假设有k个数出现(我们可以枚举这个k), 那么这k个数的排列就是
因为第一个数是不会有影响的, 所以可以把k个数的第一个放到第一位。
剩下的(k-1)个数要放进(n-1)个格子中有
种方法, 其实这些位置就是这个数第一次出现的位置, 剩余n-k的位置其实是没有贡献的。
答案就是
拆开看第k项就是

那么可以从k = 1递推,
特殊地ans[1] = m
ans[2] = ans[1] * (m-1) * (n-1) / 1
ans[3] = ans[2] * (m-2) * (n-2) / 2...
注意求模跟逆元就行了
#include<bits/stdc++.h>
using namespace std;
const long long MOD = ;
const int maxN = 1e6;
long long inv(long long a, long long b){
long long sum = ;
while(b){
if(b & ) sum = sum * a % MOD;
b /= ;
a = a * a % MOD;
}
return sum;
}
long long n, m, Min;
long long Inv[maxN + ]; //a() c(n,m)
void init() {
Inv[] = ;
long long _ = ;
for(int i = ; i <= maxN; i++){
Inv[i] = inv(i, MOD - );
}
}
int main() {
init();
int T;
scanf("%d", &T);
for(int kase = ; kase <= T; kase++) {
scanf("%lld %lld",&n , &m);
Min = min(n, m); m %= MOD, n %= MOD; long long ans = m;
long long sum = m;
for(int i = ; i < Min; i++){
sum = sum * (m - i) % MOD * (n - i) % MOD * Inv[i] % MOD;
ans += sum;
ans %= MOD;
}
printf("Case #%d: %lld\n",kase, ans);
}
}
牛客网暑期ACM多校训练营(第六场) C Generation I(组合数学, 逆元)的更多相关文章
- Symmetric Matrix 牛客网暑期ACM多校训练营(第一场) B dp 组合数学
Count the number of n x n matrices A satisfying the following condition modulo m. * Ai, j ∈ {0, 1, 2 ...
- 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?
牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...
- 牛客网 暑期ACM多校训练营(第一场)A.Monotonic Matrix-矩阵转化为格子路径的非降路径计数,Lindström-Gessel-Viennot引理-组合数学
牛客网暑期ACM多校训练营(第一场) A.Monotonic Matrix 这个题就是给你一个n*m的矩阵,往里面填{0,1,2}这三种数,要求是Ai,j⩽Ai+1,j,Ai,j⩽Ai,j+1 ,问你 ...
- 2018牛客网暑期ACM多校训练营(第二场)I- car ( 思维)
2018牛客网暑期ACM多校训练营(第二场)I- car 链接:https://ac.nowcoder.com/acm/contest/140/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 ...
- 牛客网暑期ACM多校训练营(第一场) - J Different Integers(线段数组or莫队)
链接:https://www.nowcoder.com/acm/contest/139/J来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...
- 牛客网暑期ACM多校训练营(第九场) A题 FWT
链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian ...
- 牛客网暑期ACM多校训练营(第九场)D
链接:https://www.nowcoder.com/acm/contest/147/D来源:牛客网 Niuniu likes traveling. Now he will travel on a ...
- 牛客网暑期ACM多校训练营(第二场)B discount
链接:https://www.nowcoder.com/acm/contest/140/B来源:牛客网 题目描述 White Rabbit wants to buy some drinks from ...
- 2018牛客网暑期ACM多校训练营(第一场)D图同构,J
链接:https://www.nowcoder.com/acm/contest/139/D来源:牛客网 同构图:假设G=(V,E)和G1=(V1,E1)是两个图,如果存在一个双射m:V→V1,使得对所 ...
- 牛客网暑期ACM多校训练营(第二场) I Car 思维
链接:https://www.nowcoder.com/acm/contest/140/I来源:牛客网 White Cloud has a square of n*n from (1,1) to (n ...
随机推荐
- 2-1~3 MVC
2-1~3 MVC 内容简介 为什么需要mvc? 前端mvc的困难在哪里? AngularJS语境下的mvc是如何实现的? 1. 为什么需要mvc 代码规模越来越大,切分职责是大势所趋. 为了复用:很 ...
- Gym - 101810B ACM International Collegiate Programming Contest (2018)
bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...
- python 多继承(新式类) 三
深入super 一下内容引用自:http://www.cnblogs.com/lovemo1314/archive/2011/05/03/2035005.html,写的挺好的. 代码段3 class ...
- java中 awt Graphics2D
Graphics2D ,Graphics 类,提供了对几何形状.坐标转换.颜色管理和文本布局更为复杂的控制.它是用于在 Java(tm) 平台上呈现二维形状.文本和图像的基础类.验证码生成可以用到此类 ...
- mint-ui pull down不起作用及解决方案
<template> <div style="min-height:200px"> <mt-loadmore :top-method="lo ...
- nodejs json
var express = require('express');var router = express.Router(); /* GET home page. */ router.get('/', ...
- Java设计模式之单例模式 - Singleton
用来创建独一无二的,是能有一个实例的对象的入场券.告诉你一个好消息,单例模式的类图可以说是所有模式的类图中最简单的,事实上,它的类图上只有一个类!但是,可不要兴奋过头,尽管从类设计的视角来说很简单,但 ...
- 单线程异步回调机制的缺陷与node的解决方案
一.node单线程异步的缺陷: 单线程异步的优点自然不必多说,node之所以能够如此快的兴起,其单线程异步回调机制相比于传统同步执行编程语言的优势便是原因之一.然而,开发一个node程序,其缺陷也是不 ...
- Java编程基础-字符串
在Java语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:另一类是在程序中会被改变长度的可变字符串.Java环境为了存储和维护这两 ...
- 电脑连接海信电视 HDMI
注意:我们家的电视是海信的,所以不能代表所有的电视哦~~~ 家里电视有线电视已经过期很长时间了,早就想把电脑连接到电视上用电视做显示器的心了,今天来兴趣了,就弄了一下!!! 用电脑连接电视需要先解决两 ...