把每一位上不递减的数拆成1+11+11111+11111+.....

然后就可以把巨大的N从复杂度中消掉,因为随着长度的增加1...111%p出现了循环节。

然后就是从n个数中选出几个使他们结果为0(mod p)

然后就可以DP了,因为不能有前导零,需要最后再加上以一个数。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define F(i,j,k) for (ll i=j;i<=k;++i)
#define D(i,j,k) for (ll i=j;i>=k;--i)
#define ll long long
#define mod 999911659LL
ll x,n,p,cnt[505],tot,sz,now=0,pre=1,add,flag[505],pp=0;
ll dp[2][510][10],fac[20],fac_inv[20];
ll C(ll n,ll m)
{
ll ret=fac_inv[m];
for (n%=mod;m--;ret=1LL*ret*n%mod,n--);
return ret;
} ll qpow(ll a,ll b)
{
ll ret=1;
while (b)
{
if (b&1) (ret*=a)%=mod;
(a*=a)%=mod;
b>>=1;
}
return ret;
} int main()
{
scanf("%lld%lld",&n,&p); add=x=1;tot=0; x%=p;
for (tot=0;tot<n;++tot)
{
if (cnt[x]) break;
flag[x]=++pp;
cnt[x]++; add=x;
x=(x*10+1)%p;
}
sz=(n-tot)/(pp+1-flag[x]);
tot=(n-tot)%(pp+1-flag[x]);
F(i,0,p-1) if (flag[i]>=flag[x]&&flag[i]<=pp)cnt[i]=cnt[i]*(sz+1);
for (ll i=0;i<tot;++i) cnt[x]++,add=x,x=(x*10+1)%p;
F(i,0,p-1) cnt[i]%=mod;
fac[0]=1;F(i,1,15) fac[i]=(fac[i-1]*i)%mod;
add=(p-add)%p;
F(i,0,15) fac_inv[i]=qpow(fac[i],mod-2);
now=1; pre=0;
memset(dp[now],0,sizeof dp[now]);
dp[now][0][0]=1; if (cnt[0]) F(i,1,8) dp[now][0][i]=C(cnt[0]+i-1,i);
F(i,1,p-1) if (cnt[i]){
now^=1;pre^=1;
memset(dp[now],0,sizeof dp[now]);
F(j,0,p-1) F(k,0,8) if (dp[pre][j][k])
F(l,0,9LL-k-1)
dp[now][(j+i*l)%p][k+l]=(dp[now][(j+i*l)%p][k+l]+1LL*dp[pre][j][k]*C(cnt[i]+l-1,l))%mod;
}
ll ans=0;
F(i,0,8) (ans+=dp[now][add][i])%=mod;
printf("%lld\n",ans);
}

  

最新文章

  1. pycharm2016 激活
  2. string中Insert与Format效率对比、String与List中Contains与IndexOf的效率对比
  3. Canvas绘图基础(一)
  4. Wix 安装部署教程(十一) ---QuickWix
  5. Vue的一个陷阱
  6. EF-CodeFirst-3搞事
  7. 10-20日 &amp;&amp; 抽签问题
  8. 几个简单的html+css+js题目
  9. Ruby on Rails Tutorial 第一章 之 Git项目管理
  10. JavaAppArguments.java程序的更改
  11. win7 VMware Workstation Centos6.5虚机桥接上网设置 详解(靠谱)
  12. JPlayer Jquery video视频插件
  13. python显示中文出错以及抛出UnicodeDecodeError的处理办法
  14. Android listView异步下载和convertView复用产生的错位问题
  15. DBExpress动态连接SQL-Server
  16. HIVE开发总结
  17. Node querystring
  18. 『计算机视觉』Mask-RCNN_推断网络终篇:使用detect方法进行推断
  19. Oracle11g温习-第十一章:管理undo
  20. TextKit简单示例

热门文章

  1. Handler消息机制的一些原理(直接用code讲解)——Android开发
  2. java动态代理使用详解
  3. OpenGL 渲染上下文-context
  4. Dance links算法
  5. 树形DP 统计树中长度为K的路径数量——Distance in Tree
  6. velocity生成静态页面代码
  7. PHP 头部utf-8
  8. 使Linux支持exFAT和NTFS格式的磁盘
  9. CSS 布局经典问题初步整理
  10. Template--模板