不妨不管j<=i的限制。由卢卡斯定理,C(i,j) mod k=0相当于k进制下存在某位上j大于i。容易想到数位dp,即设f[x][0/1][0/1][0/1]为到第x位时是否有某位上j>i,是否卡n、m的限制的方案数。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 100
#define P 1000000007
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
ll n,m;
int T,k,ans,f[N][][][],a[N],b[N];
void inc(int &x,int y){x+=y;if (x>=P) x-=P;}
int calc(ll n,ll m)
{
int t=-;
while (n) a[++t]=n%k,n/=k;
for (int i=;i<=t;i++) b[i]=m%k,m/=k;
memset(f,,sizeof(f));
f[t+][][][]=;
for (int i=t;~i;i--)
for (int j=;j<=;j++)
for (int x=;x<=;x++)
for (int y=;y<=;y++)
for (int p=x;p<=;p++)
for (int q=y;q<=;q++)
{
int ln=x==?a[i]:,rn=x==?a[i]:(p==?a[i]-:k-),lm=y==?b[i]:,rm=y==?b[i]:(q==?b[i]-:k-);
int s=;
for (int u=ln;u<=rn;u++)
for (int v=lm;v<=rm;v++)
if (v<=u) s++;
inc(f[i][j][x][y],1ll*f[i+][j][p][q]*s%P);
if (j) inc(f[i][j][x][y],1ll*f[i+][j-][p][q]*((rn-ln+)*(rm-lm+)-s)%P),
inc(f[i][j][x][y],1ll*f[i+][j][p][q]*((rn-ln+)*(rm-lm+)-s)%P);
}
return ((f[][][][]+f[][][][])%P+(f[][][][]+f[][][][])%P)%P;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj4737.in","r",stdin);
freopen("bzoj4737.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
T=read(),k=read();
while (T--)
{
cin>>n>>m;m=min(n,m);
if (m&) ans=(P-(m%P)*((m+>>)%P)%P)%P;
else ans=(P-((m+)%P)*((m>>)%P)%P)%P;
inc(ans,calc(n,m));
cout<<ans<<endl;
}
return ;
}

最新文章

  1. HTML5简介
  2. WinForm------RepositoryItemCheckEdit属性介绍
  3. C# 向IQueryable添加一个Include扩展方法
  4. GitFlow教程
  5. PHP 面向对象之自定义类
  6. 使用国内镜像通过pip安装python的一些包 Cannot fetch index base URL http://pypi.python.org/simple/
  7. C程序设计语言练习题1-13
  8. java实现简单的单点登录
  9. tomcat日志分析详解
  10. s nrmtyu,yi.sfn rt
  11. SP2010 3D标签云Web部分--很酷的效果,强烈推荐!!
  12. js-call、apply
  13. 将 FFmpeg 移植到 Android平台 (完整版)
  14. Java中==与equals的区别及理解
  15. 31.Stack
  16. spring3.2.2 remoting HTTP invoker 实现方式
  17. mysql 记录根据日期字段倒序输出
  18. vuex的学习例子
  19. Android studio 配置file encoding 无效,中文乱码解决办法
  20. jumpserver的安装

热门文章

  1. LeetCode: 56. Merge Intervals(Medium)
  2. 写了个汉字转G代码工具,无描边的那种,市面上没有类似的小软件
  3. postman使用感言
  4. PyMySQL连接MySQL数据库
  5. Linux命令应用大词典-第26章 模块和内核管理
  6. 机器学习-线性回归LinearRegression
  7. 使用eclipse创建maven项目出现的一个问题
  8. HTML5+Bootstrap 学习笔记 1
  9. nodejs笔记--基础篇(一)
  10. Nodejs第一天-{Nodejs基础 深刻理解浏览器 环境变量 基础语法}