BZOJ AC900题纪念~~

若K>0,则

设f[i][j]表示i位数字,积为j的数字的个数

g[i][j]表示i位数字,积为j的数字的和

DP+Hash预处理

查询时枚举LCP然后统计贡献

若K=0,则

设f[i][j][k][l]表示已知前i位,乘积是否不为0,是否等于x,是否有数字的数字的个数

g[i][j][k][l]表示已知前i位,乘积是否不为0,是否等于x,是否有数字的数字的和

数位DP即可

#include<cstdio>
typedef long long ll;
const int P=20120427,H=1000037,M=66062;
int a[19],len,i,j,k,t,T,g[H],nxt[M],ed;ll n,l,r,K,tmp,pow[19],fin,v[M];
inline int get(ll u){int x=u%H,i=g[x];for(;i;i=nxt[i])if(v[i]==u)return i;return v[++ed]=u,nxt[ed]=g[x],g[x]=ed;
}
inline int ask(ll u){for(int i=g[u%H];i;i=nxt[i])if(v[i]==u)return i;return 0;
}
namespace Subtask1{
int f[19][M],g[19][M];
void init(){f[0][get(1)]=1;for(i=0;i<18;i++)for(j=1;j<=ed;j++)for(k=1;k<=9;k++){if(v[j]*k>1000000000000000000LL)break;(f[i+1][t=get(v[j]*k)]+=f[i][j])%=P;(g[i+1][t]+=g[i][j]*10+f[i][j]*k)%=P;}
}
inline ll cal(ll x,ll K){ll ans=0,pre=0,mul=1;for(len=0,tmp=x;tmp;a[++len]=tmp%10,tmp/=10);for(i=len;i;i--){if(!a[i])break;for(j=1;j<a[i];j++)if((K%(mul*j))==0){tmp=K/mul/j;t=ask(tmp);(ans+=(pre*10+j)*pow[i-1]%P*f[i-1][t]%P+g[i-1][t])%=P;}(pre*=10)+=a[i],mul*=a[i];}for(K=ask(K),i=1;i<len;i++)(ans+=g[i][K])%=P;return ans;
}
}
namespace Subtask2{
ll f[19][2][2][2],g[19][2][2][2];
inline ll cal(ll x){for(len=0,tmp=x;tmp;a[++len]=tmp%10,tmp/=10);for(i=1,j=len;i<=len&&i<j;i++,j--)t=a[i],a[i]=a[j],a[j]=t;for(i=1;i<=len;i++)for(j=0;j<2;j++)for(k=0;k<2;k++)for(t=0;t<2;t++)f[i][j][k][t]=g[i][j][k][t]=0;for(i=0;i<=a[1];i++)f[1][i>0][i==a[1]][i>0]++,g[1][i>0][i==a[1]][i>0]+=i;for(i=1;i<len;i++)for(j=0;j<2;j++){for(k=0;k<=9;k++)(f[i+1][k>0][0][k>0]+=f[i][j][0][0])%=P,(g[i+1][k>0][0][k>0]+=g[i][j][0][0]*10%P+f[i][j][0][0]*k%P)%=P;for(k=0;k<=9;k++)(f[i+1][j&&k>0][0][1]+=f[i][j][0][1])%=P,(g[i+1][j&&k>0][0][1]+=g[i][j][0][1]*10%P+f[i][j][0][1]*k%P)%=P;for(k=0;k<=a[i+1];k++)(f[i+1][j&&k>0][k==a[i+1]][1]+=f[i][j][1][1])%=P,(g[i+1][j&&k>0][k==a[i+1]][1]+=g[i][j][1][1]*10%P+f[i][j][1][1]*k%P)%=P;}return g[len][0][0][1];
}
}
int main(){for(pow[0]=i=1;i<19;i++)pow[i]=pow[i-1]*10;Subtask1::init();scanf("%d",&T);while(T--){scanf("%lld%lld%lld",&l,&r,&K);if(K)fin=(Subtask1::cal(r+1,K)-Subtask1::cal(l,K))%P;else fin=(Subtask2::cal(r+1)-Subtask2::cal(l))%P;while(fin<0)fin+=P;printf("%lld\n",fin);}return 0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/4403171.html

BZOJ2757 : [SCOI2012]Blinker的仰慕者相关推荐

  1. bzoj2757: [SCOI2012]Blinker的仰慕者

    bzoj2757: [SCOI2012]Blinker的仰慕者 Description Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字 ...

  2. SCOI2012 Blinker的仰慕者 BZOJ 2757

    2757: [SCOI2012]Blinker的仰慕者 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1038 Solved: 291 Descrip ...

  3. 数位dp BZOJ 2757: [SCOI2012]Blinker的仰慕者

    2757: [SCOI2012]Blinker的仰慕者 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 562  Solved: 133 [Submi ...

  4. BZOJ 2757: [SCOI2012]Blinker的仰慕者 数位DP

    好繁琐,因为难处理,分为k==0和k!=0两类处理. 代码很丑...手残伤不起... //#pragma comment(linker, "/STACK:102400000,10240000 ...

  5. [ BZOJ 2757 ]Blinker的仰慕者

    Blinker的仰慕者[L,R] 之间满足各位数字乘积为\(k\) 的数字有多少个.\((L,R \leq 10^{18})\) \(f[i][j][k]:\) 前\(i\)位数,\(j\)代表与上限 ...

  6. bzoj2757【scoi2012】Blinker的仰慕者

    题目描述 Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字之积表示这名仰慕者对Blinker的重要度. 现在Blinker想知道编号介于 ...

  7. 退役前的做题记录2.0

    退役前的做题记录2.0 最近在刷省选题......大致上是按照省份刷的. 不过上面的题目顺序是按照写题的顺序排列的,所以可能会有点乱哈. [BZOJ2823][AHOI2012]信号塔 最小圆覆盖,随 ...

  8. 牛客网dp专题 数位dp

    文章目录 数位dp 例题: NC116652 uva11038 How many 0's NC15035 送分了QAQ NC20669 诡异数字 NC20665 7的意志 NC17385 Beauti ...

  9. 【水】【SCOI】 精简题解

    第二弹 [SCOI2009]生日快乐 搜索.递归划分问题. [SCOI2009]游戏 记忆化搜索.枚举素因子,DP. [SCOI2009]windy数 数位DP,分块统计. [SCOI2009]最长距 ...

最新文章

  1. DCGAN in Tensorflow生成动漫人物
  2. macOS下Apache+nginx+mysql+php多版本切换的配置
  3. 使用Apollo通过WebSocket通过STOMP轻松进行消息传递
  4. javascript:void(0) 含义
  5. 2dpca的matlab代码,2DPCA人脸识别的matlab代码
  6. Extreme Programming
  7. 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
  8. HDU2093 考试排名【排序】
  9. Eclipse中ICTCLAS 2011 的java调用
  10. COMSOL模拟气流可视化
  11. office2010c盘_Win10官方精简winxp ghost office2010系统流出:C盘装完梦回XP
  12. 企业邮箱怎么换服务器,如何更换企业邮箱
  13. 查询ip区间的ip地址的sql语句
  14. html的锚标记,HTML验证锚标记
  15. 色彩可视化 | 30DayMapChallenge
  16. 信息学奥赛一本通1176题——谁考了第k名
  17. 大数据开发就业:大数据开发有哪些岗位
  18. iPhone SDK 包含哪些东西
  19. SDSoC软硬件协同设计流程系列——1.基于SDSoC的软硬件协同设计流程简介
  20. TCP/IP之蓟辽督师 转

热门文章

  1. 蒙太奇服务器维修,蒙太奇服务器多台互连导片方法
  2. java中的常用类-1
  3. 详解keras中的Mask机制
  4. 我所学到的EC-2(个人学习总结,不能保证正确,欢迎大佬指正)
  5. java实现打印机打印发票路径
  6. 如何使用CorelDRAW 2019绘制谷歌浏览器Logo
  7. vue:hadoop@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
  8. Codeforces Round #143 (Div. 2) C. To Add or Not to Add 胡搞
  9. go: no such tool “compile“(一次糟糕体验)
  10. Node-RED使用指南:6:配置与设定总结:运行环境配置