给定n,m和k,求有多少对(i , j)满
足0 ≤ i ≤ n, 0 ≤ j ≤ min(i ,m)且C(︀i,j)︀是k的倍数.
n,m ≤ 1018, k ≤ 100,且k是质数.

把i和j都看成k进制数,事实上这个问题就是问有多少
对j ≤ i满足j有一位比i大.

转化成数位DP

对每一位进行转移

bool判断是否当前位n<=a[i],m<=b[i]

By:大奕哥

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+;
ll inv=500000004ll;
int T;
ll f[][][],a[],b[],k; ll calc(ll x,ll y)
{
if(x<||y<)return ;
if(x<y)return 1ll*((x+)%mod*(x+)%mod)%mod*inv%mod;
return (1ll*(y+)%mod*((y+)%mod)%mod*inv%mod+1ll*(x-y)%mod*((y+)%mod)%mod)%mod;
}
int main()
{
scanf("%d%lld",&T,&k);
while(T--)
{
int n=,m=;long long x,y;
scanf("%lld",&x);ll t=x;
while(t)
{
a[++n]=t%k;t/=k;
}
scanf("%lld",&y);y=min(y,x);t=y;
while(t)
{
b[++m]=t%k;t/=k;
}
long long ans=calc(x,y);
f[][][]=;
for(int i=;i<=n;++i)
{
f[i][][]=(calc(a[i],b[i])*f[i-][][]%mod+calc(a[i],b[i]-)*f[i-][][]%mod+calc(a[i]-,b[i])*f[i-][][]%mod+calc(a[i]-,b[i]-)*f[i-][][]%mod)%mod;
f[i][][]=(calc(k-,b[i])*(f[i-][][]+f[i-][][])%mod+calc(k-,b[i]-)*(f[i-][][]+f[i-][][])%mod-f[i][][]+mod)%mod;
f[i][][]=(calc(a[i],k-)*(f[i-][][]+f[i-][][])%mod+calc(a[i]-,k-)*(f[i-][][]+f[i-][][])%mod-f[i][][]+mod)%mod;
f[i][][]=(((calc(k-,k-)*(f[i-][][]+f[i-][][]+f[i-][][]+f[i-][][])%mod-f[i][][]+mod)%mod-f[i][][]+mod)%mod-f[i][][]+mod)%mod;
}
printf("%lld\n",(ans-f[n][][]+mod)%mod);
while(n)a[n--]=;
while(m)b[m--]=;
}
}

UOJ275 组合数问题的更多相关文章

  1. UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】

    题目分析: 我记得很久以前有人跟我说NOIP2016的题目出了加强版在清华集训中,但这似乎是一道无关的题目? 由于$k$为素数,那么$lucas$定理就可以搬上台面了. 注意到$\binom{i}{j ...

  2. LCM性质 + 组合数 - HDU 5407 CRB and Candies

    CRB and Candies Problem's Link Mean: 给定一个数n,求LCM(C(n,0),C(n,1),C(n,2)...C(n,n))的值,(n<=1e6). analy ...

  3. 计算一维组合数的java实现

    背景很简单,就是从给定的m个不同的元素中选出n个,输出所有的组合情况! 例如:从1到m的自然数中,选择n(n<=m)个数,有多少种选择的组合,将其输出! 本方案的代码实现逻辑是比较成熟的方案: ...

  4. Noip2016提高组 组合数问题problem

    Day2 T1 题目大意 告诉你组合数公式,其中n!=1*2*3*4*5*...*n:意思是从n个物体取出m个物体的方案数 现给定n.m.k,问在所有i(1<=i<=n),所有j(1< ...

  5. C++单元测试 之 gtest -- 组合数计算.

    本文将介绍如何使用gtest进行单元测试. gtest是google单元测试框架.使用非常方便. 首先,下载gtest (有些google项目包含gtest,如 protobuf),复制目录即可使用. ...

  6. NOIP2011多项式系数[快速幂|组合数|逆元]

    题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...

  7. AC日记——组合数问题 落谷 P2822 noip2016day2T1

    题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...

  8. 【板子】gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数

    1.gcd int gcd(int a,int b){ return b?gcd(b,a%b):a; } 2.扩展gcd )extend great common divisor ll exgcd(l ...

  9. 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 95  Solved: 33[Submit][Statu ...

随机推荐

  1. 音频自动增益 与 静音检测 算法 附完整C代码【转】

    转自:https://www.cnblogs.com/cpuimage/p/8908551.html 前面分享过一个算法<音频增益响度分析 ReplayGain 附完整C代码示例> 主要用 ...

  2. PostgreSQL内核分析——BTree索引

    文中附图参考至<PostgreSQL数据库内核分析> (一)概念描述 B+树是一种索引数据结构,其一个特征在于非叶子节点用于描述索引,而叶子节点指向具体的数据存储位置.在PostgreSQ ...

  3. linux 进程内存解析【转】

    转自:http://blog.csdn.net/lile269/article/details/6460807 之前我所了解的linux下进程的地址空间的布局的知识,是从APUE第2版的P430得来的 ...

  4. ajax代码示例

    function loadXMLDoc(idName,url,sendOut) { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, ...

  5. 教你用DrawLayout 实现Android 侧滑菜单

    现在的APP越来越注重用户体验,百度视频客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示.类似的还有天天动听,人 ...

  6. Flask:初次使用Flask-SQLAlchemy读取SQLite3

    Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2,Eclipse Oxygen.1a Release (4.7.1a),PyDev 6.3.2 SQLAlchemy是一 ...

  7. hash算法原理详解

    转载出处http://blog.csdn.net/tanggao1314/article/details/51457585 一.概念 哈希表就是一种以 键-值(key-indexed) 存储数据的结构 ...

  8. python基础学习之路No.4 数据转换以及操作

    练习python的时候经常会用到一些不同数据类型之间的转换操作 搜集了一些资料,整理如下 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个 ...

  9. less常用样式集,清除浮动、背景自适应、背景渐变、圆角、内外阴影、高度宽度计算。

    .clear-float() { content: ''; display: block; clear: both; height:; } //伪元素清除浮动 .after-clear() { &am ...

  10. java IO流之——File类知识总结和面试

    File类描述的是一个文件或文件夹.(文件夹也可以称为目录).该类的出现是对文件系统的中的文件以及文件夹进行对象的封装.可以通过对象的思想来操作文件以及文件夹.可以用面向对象的处理问题,通过该对象的方 ...