传送门

这是一道让我重新认识lucaslucaslucas的题。

考虑到lucaslucaslucas定理:

(nm)≡(n%pm%p)∗(npmp)\binom n m \equiv \binom {n\%p} {m\%p}*\binom{\frac n p}{\frac m p}(mn​)≡(m%pn%p​)∗(pm​pn​​) (mod(mod(mod p)p)p)

所以可以看成(nm)\binom n m(mn​)在p进制下的表示

于是这道题就可以用这个方法转换成求C(i,j)C(i,j)C(i,j)某一个进制位上满足ip&lt;jpi_p&lt;j_pip​<jp​的方案数。

然后可以通过容斥转一转变成求某一位ip≥jpi_p\geq j_pip​≥jp​的方案数。

于是就可以上数位dpdpdp了。

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m;
const int mod=1e9+7,inv2=(mod+1)/2;
int T,k,f[70][2][2],sum[105][105],numn[70],numm[70],lenn=0,lenm=0;
inline int S(ll x){return x%=mod,(ll)x*(x+1)%mod*inv2%mod;}
inline int calc(ll a,ll b){return (S(a)-S(a-min(a,b))+mod)%mod;}
int main(){
	scanf("%d%d",&T,&k);
	for(int i=0;i<=k;++i)for(int j=0;j<=k;++j)sum[i][j]=calc(i,j);
	while(T--){
		scanf("%lld%lld",&n,&m);
		if(n<m)m=n;
		int ans=calc(n+1,m+1);
		memset(f,0,sizeof(f)),lenn=lenm=0;
		while(n)numn[++lenn]=n-n/k*k,n/=k;
		while(m)numm[++lenm]=m-m/k*k,m/=k;
		while(lenm<lenn)numm[++lenm]=0;
		f[n=lenn][1][1]=1;
		for(int i=n;i;--i){
			int upn=numn[i],upm=numm[i];
			f[i-1][1][1]=f[i][1][1]*(upn>=upm);
			f[i-1][1][0]=((ll)f[i][1][0]*(upn+1)%mod+(ll)f[i][1][1]*min(upn+1,upm)%mod)%mod;
			f[i-1][0][1]=((ll)f[i][1][1]*max(upn-upm,0)%mod+(ll)f[i][0][1]*(k-upm)%mod)%mod;
			f[i-1][0][0]=(((ll)f[i][0][0]*sum[k][k]%mod+(ll)f[i][0][1]*sum[k][upm])%mod+((ll)f[i][1][0]*sum[upn][k]%mod+(ll)f[i][1][1]*sum[upn][upm]%mod)%mod)%mod;
		}
		for(int i=0;i<2;++i)for(int j=0;j<2;++j)ans=(ans-f[0][i][j]+mod)%mod;
		printf("%d\n",ans);
	}
	return 0;
}

2018.10.31 bzoj4737: 组合数问题(lucas定理+容斥原理+数位dp)的更多相关文章

  1. 【NOI2019模拟2019.6.29】组合数(Lucas定理、数位dp)

    Description: p<=10且p是质数,n<=7,l,r<=1e18 题解: Lucas定理: \(C_{n}^m=C_{n~mod~p}^{m~mod~p}*C_{n/p} ...

  2. 2018.10.31 NOIP模拟 几串字符(数位dp+组合数学)

    传送门 如果观察到性质其实也不是很难想. 然而考试的时候慌得一批只有心思写暴力233. 下面是几个很有用的性质: c0,1+1≥c1,0≥c0,1c_{0,1 }+1 ≥ c_{1,0} ≥ c_{0 ...

  3. 2018.10.27 bzoj3209: 花神的数论题(数位dp)

    传送门 数位dpdpdp经典题. 题面已经暗示了我们按照二进制位来数位dpdpdp. 直接dpdpdp多少个数有111个111,222个111,333个111-, 然后快速幂算就行了. 于是我们枚举前 ...

  4. [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)

    题面 传送门:UOJ Solution 这题的数位DP好蛋疼啊qwq 好吧,我们说回正题. 首先,我们先回忆一下LUCAS定理: \(C_n^m \equiv C_{n/p}^{m/p} \times ...

  5. 【算法学习笔记】组合数与 Lucas 定理

    卢卡斯定理是一个与组合数有关的数论定理,在算法竞赛中用于求组合数对某质数的模. 第一部分是博主的个人理解,第二部分为 Pecco 学长的介绍 第一部分 一般情况下,我们计算大组合数取模问题是用递推公式 ...

  6. 大组合数:Lucas定理

    最近碰到一题,问你求mod (p1*p2*p3*……*pl) ,其中n和m数据范围是1~1e18 , l ≤10 , pi ≤ 1e5为不同的质数,并保证M=p1*p2*p3*……*pl ≤ 1e18 ...

  7. [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]

    之前一段时间都在个人公众号账号“大内老A”发布关于ASP.NET Core的系列文章,很多人留言希望能够同步到这里,所以在这里 对这些文章做一个汇总,以便于PC端阅读.如果说微软官方文档主要关于ASP ...

  8. 2018.09.14 bzoj2982: combination(Lucas定理)

    传送门 貌似就是lucas的板子题啊. 练一练手感觉挺舒服的^_^ 代码: #include<bits/stdc++.h> #define mod 10007 #define ll lon ...

  9. it's time to change myself now (2018.10.31)

    自16年从新屋熊职校毕业,入职深圳某厂从事云存储两年半了.两年半的时间很快,快的感觉一生都会飞快,两年多一直很忙,忙的几乎忘了自己是否正向改变过. 正向改变,or 积极改变,今年十一回家,与几个好友小 ...

随机推荐

  1. Python+Selenium学习--定位iframe中的对象

    场景 在web 应用中经常会出现frame 嵌套的应用,假设页面上有A.B 两个frame,其中B 在A 内,那么定位B 中的内容则需要先到A,然后再到B.      switch_to_frame ...

  2. Jasperreport5.6.9-----1

    Jasperreport5.6.0生成PDF 最近项目中需要生成报表,先是看了下itext,觉得还可以,但是如果数据字段多的话,不太灵活.所以后来看了下ireport,觉得还可以,下面简单说一下它们: ...

  3. 用django实现一个资产管理的系统

    整个页面的效果如下图所示 1.登陆注册页面 2.注册的页面 3.登陆页面 4.所有设备 5.正常设备页面 6.退库设备页面 7.丢失设备页面 8.导出设备的页面,仅仅在所有设备页面才支持导出按钮 9. ...

  4. iOS - iphoneX系列 - 全局配置的基本信息

      /// 获得当前窗口 var JY_WINDOW: UIWindow? { get{ if let app = UIApplication.shared.delegate as? AppDeleg ...

  5. C++ 读取文本文件内容到结构体数组中并排序

    成绩排行:从Score.txt文件读取学生信息,对其进行排序,按回答题数从大到小排,若相等,按分数从小到大排 #include<iostream> #include<fstream& ...

  6. shell加密工具shc的安装和使用

    1) 工具说明 shell脚本是可读写的, 很有可能会泄露敏感信息, 如用户名/密码/路径/IP等. 同样在shell脚本运行时会也泄露敏感信息. shc是一个加密shell脚本的工具, 它的作用是把 ...

  7. oracle学习之数据库数据保存成文件

    常常需要将数据库中的数据生成文档,由于比较喜欢脚本的方式,所以就需要使用spool的时候进行格式设置,以下简单整理了一下oracle中进行格式设置的一些东西,一共十八条,其实常用的也就那么几个,稍后会 ...

  8. SQL删除重复数据只保留一条数据

    1.表结构与数据: CREATE TABLE tablezzl( id int, name ) ); 2.查询出重复的数据: 3.查询出要保留的重复数据: 4.最终的SQL: DELETE FROM ...

  9. andorid 进度条和图片的透明度

    layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...

  10. 10分钟搭建 App 主流框架

    搭建主流框架界面 0.达成效果 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是搭建 ...