WD与循环 组合数学
WD与循环
为什么大家都是先算\(n\)个数的和等于\(m\)的情况再求前缀和?
既然已经想到了插板法,为什么不直接对\(n\)个数的和\(\le m\)的情况做呢?
基本套路没有变:考虑对于\(n\)个非负整数,先变成\(n\)个正整数,求和\(\le m + n\)的情况。下面是不同的地方:在\(m + n\)个小球之间插入\(n\)块板子,具体地说,在每个球的右边可以插入一块板子,对于从左往右数第\(i\)块板子,它到第\(i - 1\)块板子或者左端点之间的小球数就是第\(i\)个数,对于最右边的一块板子,它左边的板子数即没有被分到任何一个数中的小球个数一定\(\ge 0\),这正好对应了我们\(\le m + n\)的条件。得到式子\(\binom {n + m} {n}\),lucas定理即可。
yyb是我们的红太阳,%yyb有益身心健康
//written by newbiechd
#include <cstdio>
#include <cctype>
#define R register
#define I inline
#define B 1000000
#define L long long
using namespace std;
const int yyb = 19491001;
char buf[B], *p1, *p2;
I char gc() { return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, B, stdin), p1 == p2) ? EOF : *p1++; }
I L rd() {
L f = 0;
R char c = gc();
while (c < 48 || c > 57)
c = gc();
while (c > 47 && c < 58)
f = f * 10 + (c ^ 48), c = gc();
return f;
}
L a[yyb];
I L pow(L x, L y) {
L r = 1;
for (x %= yyb; y; y >>= 1, x = x * x % yyb)
if (y & 1)
r = r * x % yyb;
return r;
}
I L com(L n, L m) {
if (m > n)
return 0;
return a[n] * pow(a[m], yyb - 2) % yyb * pow(a[n - m], yyb - 2) % yyb;
}
L lucas(L n, L m) {
if (!m)
return 1;
return com(n % yyb, m % yyb) * lucas(n / yyb, m / yyb) % yyb;
}
int main() {
R int T = rd(), i;
L n, m;
a[0] = 1;
for (i = 1; i < yyb; ++i)
a[i] = a[i - 1] * i % yyb;
for (i = 1; i <= T; ++i)
n = rd(), m = rd(), printf("%lld\n", lucas(n + m, n));
return 0;
}
WD与循环 组合数学的更多相关文章
- 洛谷P5160 WD与循环
我们看这段代码 int cnt = 0; for (int a_1 = 0; a_1 <= m; a_1++) { for (int a_2 = 0; a_1 + a_2 <= m; a_ ...
- 【python爬虫实战】使用Selenium webdriver采集山东招考数据
目录 1.目标 2.Selenium webdriver说明 2.1 为什么使用webdriver 2.2 webdriver支持浏览器 2.3 配置与使用说明 3.采集 3.1 分析网站 3.2 遍 ...
- 定义declare、%TYPE%、ROWTYPE、加循环
%TYPE:定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE. %ROWTYPE PL/SQL 提供%ROWTYPE 操作符, ...
- HDU4675【GCD of scequence】【组合数学、费马小定理、取模】
看题解一开始还有地方不理解,果然是我的组合数学思维比较差 然后理解了之后自己敲了一个果断TLE.... 我以后果然还得多练啊 好巧妙的思路啊 知识1: 对于除法取模还需要用到费马小定理: a ^ (p ...
- 《Mathematical Olympiad——组合数学》——操作和游戏
这篇文章,我们开始对奥数中有关操作和游戏的问题进行分析和讨论,其实在信息学竞赛中涉及到的一些博弈问题(分析必胜策略)的问题(例如巴什博弈.尼姆博弈),本质上来讲,就是组合数学当中的组合游戏,并不是真正 ...
- 《程序设计中的组合数学》——polya计数
我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...
- Python 安装、循环语句、数据类型(一)
一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: P ...
- [SinGuLaRiTy] 组合数学题目复习
[SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...
- 【BZOJ1004】Cards(组合数学,Burnside引理)
[BZOJ1004]Cards(组合数学,Burnside引理) 题面 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Su ...
随机推荐
- (网页)JS实现alert中显示换行的方法
转自脚本之家: 这篇文章主要介绍了JS实现alert中显示换行的方法,实例分析了两种实现alert换行的实现技巧,非常简单实用,需要的朋友可以参考下 本文实例讲述了JS实现alert中显示换行的方法. ...
- Django 信息
Request information USER admin GET No GET data POST No POST data FILES No FILES data COOKIES Variabl ...
- 自定义合并列:el-table
objectSpanMethod({ row, column, rowIndex, columnIndex }) {//合并规则 //当前行row.当前列column.当前行号rowIndex.当前列 ...
- pyenv离线安装python各版本
1.问题描述: 可能是国内的网络原因,在线用pyenv安装python老是定住没反应 [root@zabbix ~]# pyenv install Downloading Python-.tar.xz ...
- ccf题库20170903--Json查询
题目如下: 试题编号: - 试题名称: JSON查询 时间限制: .0s 内存限制: .0MB 问题描述: 问题描述 JSON (JavaScript Object Notation) 是一种轻量级的 ...
- 软件工程实践_Task2_sudoku
软工实践_Task2 标签(空格分隔): 软工实践 相关要求:第二次作业--个人项目实战 github:传送门 解题思路 先是一点杂谈. 首先,看完作业要求之后,心里先有个大概的框架. 语言:C++ ...
- 启用crontab
1.登录到root用户. 2.在root下输入:crontab -e 3.可能会提示你: no crontab for root - using an empty one 然后会叫你“Select a ...
- 【C++学习笔记】变量初始化规则
全局变量和静态变量会自动初始化为0,堆和栈中的局部变量不会初始化而拥有不可预测的值. C++保证了所有对象与对象成员都会初始化,但其中基本数据类型的初始化还得依赖于构造函数(或初始化列表). 成员变量 ...
- dp 动态规划 之C - Apple Catching 简单基础
终于开始写dp了,还很不熟练 It is a little known fact that cows love apples. Farmer John has two apple trees (whi ...
- JVM的新生代、老年代、MinorGC、MajorGC
参考资料: http://blog.csdn.net/flamezyg/article/details/44673951 http://www.blogjava.net/ldwblog/archive ...