UOJ275 组合数问题
给定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 组合数问题的更多相关文章
- UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】
题目分析: 我记得很久以前有人跟我说NOIP2016的题目出了加强版在清华集训中,但这似乎是一道无关的题目? 由于$k$为素数,那么$lucas$定理就可以搬上台面了. 注意到$\binom{i}{j ...
- 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 ...
- 计算一维组合数的java实现
背景很简单,就是从给定的m个不同的元素中选出n个,输出所有的组合情况! 例如:从1到m的自然数中,选择n(n<=m)个数,有多少种选择的组合,将其输出! 本方案的代码实现逻辑是比较成熟的方案: ...
- Noip2016提高组 组合数问题problem
Day2 T1 题目大意 告诉你组合数公式,其中n!=1*2*3*4*5*...*n:意思是从n个物体取出m个物体的方案数 现给定n.m.k,问在所有i(1<=i<=n),所有j(1< ...
- C++单元测试 之 gtest -- 组合数计算.
本文将介绍如何使用gtest进行单元测试. gtest是google单元测试框架.使用非常方便. 首先,下载gtest (有些google项目包含gtest,如 protobuf),复制目录即可使用. ...
- NOIP2011多项式系数[快速幂|组合数|逆元]
题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...
- AC日记——组合数问题 落谷 P2822 noip2016day2T1
题目描述 组合数表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三个物品中选择两个物品可以有(1,2),(1,3),(2,3)这三种选择方法.根据组合数的定 义,我们可以给出计算 ...
- 【板子】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 ...
- 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 95 Solved: 33[Submit][Statu ...
随机推荐
- 系统学习(javascript)_基础(数据类型之间的转换)
在js中数据类型转换一般分为两种,即强制类型转换和隐式类型转换(利用javascript弱变量类型转换). 强制转换: 利用js提供的函数parseInt(),parseFloat(),Number( ...
- 在mac环境下用QT使用OpenGL,glut,glfw
只需要在新建工程中.pro文件中添加: #opengl glut LIBS+= -framework opengl -framework glut 就可以使用glut了. 继续添加: ##glfw L ...
- [转]caffe中solver.prototxt参数说明
https://www.cnblogs.com/denny402/p/5074049.html solver算是caffe的核心的核心,它协调着整个模型的运作.caffe程序运行必带的一个参数就是so ...
- RPC简介与hdfs读过程与写过程简介
1.RPC简介 Remote Procedure Call 远程过程调用协议 RPC——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些 ...
- 【洛谷题解】P2303 [SDOi2012]Longge的问题
题目传送门:链接. 能自己推出正确的式子的感觉真的很好! 题意简述: 求\(\sum_{i=1}^{n}gcd(i,n)\).\(n\leq 2^{32}\). 题解: 我们开始化简式子: \(\su ...
- [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率
首先,介绍下关于InnoDB引擎存储格式的几个要点:1.InnoDB可以选择使用共享表空间或者是独立表空间方式,建议使用独立表空间,便于管理.维护.启用 innodb_file_per_table 选 ...
- 【前端开发】限制input输入保留两位小数
<input type="text" name='amount' id="cash_num" placeholder="请输入金额" ...
- Hadoop(二):MapReduce程序(Java)
Java版本程序开发过程主要包含三个步骤,一是map.reduce程序开发:第二是将程序编译成JAR包:第三使用Hadoop jar命令进行任务提交. 下面拿一个具体的例子进行说明,一个简单的词频统计 ...
- 关于 poScreenCenter 与 poDesktopCenter
主要是窗体水平方向与垂直方向的的 居中问题,由于水平方向 没有什么,所以不探讨.而垂直方向由于底部有个工具栏,工具栏自身有个高度,所以垂直方向的居中问题,需要探讨下. 结论: poScreenCent ...
- servlet 学习笔记(二)
---------------------第二讲--------------------------------- 开发servlet有三种方法: 1.实现servlet接口(最原始的) 实现接口的5 ...