WD与循环

LG传送门

为什么大家都是先算\(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与循环 组合数学的更多相关文章

  1. 洛谷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_ ...

  2. 【python爬虫实战】使用Selenium webdriver采集山东招考数据

    目录 1.目标 2.Selenium webdriver说明 2.1 为什么使用webdriver 2.2 webdriver支持浏览器 2.3 配置与使用说明 3.采集 3.1 分析网站 3.2 遍 ...

  3. 定义declare、%TYPE%、ROWTYPE、加循环

    %TYPE:定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE. %ROWTYPE PL/SQL 提供%ROWTYPE 操作符, ...

  4. HDU4675【GCD of scequence】【组合数学、费马小定理、取模】

    看题解一开始还有地方不理解,果然是我的组合数学思维比较差 然后理解了之后自己敲了一个果断TLE.... 我以后果然还得多练啊 好巧妙的思路啊 知识1: 对于除法取模还需要用到费马小定理: a ^ (p ...

  5. 《Mathematical Olympiad——组合数学》——操作和游戏

    这篇文章,我们开始对奥数中有关操作和游戏的问题进行分析和讨论,其实在信息学竞赛中涉及到的一些博弈问题(分析必胜策略)的问题(例如巴什博弈.尼姆博弈),本质上来讲,就是组合数学当中的组合游戏,并不是真正 ...

  6. 《程序设计中的组合数学》——polya计数

    我们在高中的组合数学中常常会碰到有关涂色的问题,例如:用红蓝两种颜色给正方形的四个顶点涂色,会有几种不同的方案.在当时,我们下意识的认为,正方形的四个顶点是各不相同的,即正方形是固定的.而实际上我们知 ...

  7. Python 安装、循环语句、数据类型(一)

    一.关于版本的选择 Should i use Python 2 or Python 3 for my development activity?转载自Python官网 Short version: P ...

  8. [SinGuLaRiTy] 组合数学题目复习

    [SinGuLaRiTy] Copyright (c) SinGuLaRiTy 2017.  All Rights Reserved. [CQBZOJ 2011] 计算系数 题目描述 给定一个多项式( ...

  9. 【BZOJ1004】Cards(组合数学,Burnside引理)

    [BZOJ1004]Cards(组合数学,Burnside引理) 题面 Description 小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Su ...

随机推荐

  1. ios开发GCD(2)-dispatch_semaphore_t信号量计数器

    思考:现在有多个线程异步执行,我们想要同时最多只能执行2个或n个,该怎么办? dispatch_semaphore_t 看代码解析: NSLog(@"开始"); dispatch_ ...

  2. oracle存储函数实例

    CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_ ...

  3. (网页)the server responded with a status of 403 (Forbidden)

    403跨域问题.看一下要访问的url.

  4. [20171120]关于INBOUND_CONNECT_TIMEOUT设置.txt

    [20171120]关于INBOUND_CONNECT_TIMEOUT设置.txt --//上午翻看以前我的发的帖子,发现链接:http://www.itpub.net/thread-2066758- ...

  5. Python描述符 (descriptor) 详解

    1.什么是描述符? python描述符是一个“绑定行为”的对象属性,在描述符协议中,它可以通过方法重写属性的访问.这些方法有 __get__(), __set__(), 和__delete__().如 ...

  6. 计算机硬件基本知识及Linux的常用命令

    ------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...

  7. Beta冲刺(2/5)(麻瓜制造者)

    今日完成任务 邓弘立:继续完成了昨天未完成的登录接口的重编码与测试. 李佳铭|:进一步完善了收藏UI 江郑: 对使用前端框架页面元素的进一步优化,基本功能进行中 刘双玉:部分图书馆租借接口修改 肖小强 ...

  8. iframe无刷新跨域上传文件并获得返回值

    原文:http://geeksun.iteye.com/blog/1070607 需求:从S平台上传文件到R平台,上传成功后R平台返回给S平台一个值,S平台是在一个页面弹出的浮窗里上传文件,所以不能用 ...

  9. 2019年京东Java研发岗社招面经(面试经历+真题总结+经验分享)!

    本篇先以日历形式回顾秋招之路,方便各位参考某厂的处理进度:然后是总结归纳春秋招Java面试题库:最后做个总结还有展望,开始新的征程~ 面试经历京东面试真题面试经验分享1.面试经历 2018年的冬季特别 ...

  10. python五十六课——正则表达式(常用函数之compile())

    2).compile(regex,[flags=0]):返回一个Pattern对象(认为:它内部已经封装了一套regex和flags) 可以再通过Pattern对象继续调用match函数(此时只需要传 ...