BZOJ2757 : [SCOI2012]Blinker的仰慕者
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的仰慕者相关推荐
- bzoj2757: [SCOI2012]Blinker的仰慕者
bzoj2757: [SCOI2012]Blinker的仰慕者 Description Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字 ...
- SCOI2012 Blinker的仰慕者 BZOJ 2757
2757: [SCOI2012]Blinker的仰慕者 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1038 Solved: 291 Descrip ...
- 数位dp BZOJ 2757: [SCOI2012]Blinker的仰慕者
2757: [SCOI2012]Blinker的仰慕者 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 562 Solved: 133 [Submi ...
- BZOJ 2757: [SCOI2012]Blinker的仰慕者 数位DP
好繁琐,因为难处理,分为k==0和k!=0两类处理. 代码很丑...手残伤不起... //#pragma comment(linker, "/STACK:102400000,10240000 ...
- [ BZOJ 2757 ]Blinker的仰慕者
Blinker的仰慕者[L,R] 之间满足各位数字乘积为\(k\) 的数字有多少个.\((L,R \leq 10^{18})\) \(f[i][j][k]:\) 前\(i\)位数,\(j\)代表与上限 ...
- bzoj2757【scoi2012】Blinker的仰慕者
题目描述 Blinker 有非常多的仰慕者,他给每个仰慕者一个正整数编号.而且这些编号还隐藏着特殊的意义,即编号的各位数字之积表示这名仰慕者对Blinker的重要度. 现在Blinker想知道编号介于 ...
- 退役前的做题记录2.0
退役前的做题记录2.0 最近在刷省选题......大致上是按照省份刷的. 不过上面的题目顺序是按照写题的顺序排列的,所以可能会有点乱哈. [BZOJ2823][AHOI2012]信号塔 最小圆覆盖,随 ...
- 牛客网dp专题 数位dp
文章目录 数位dp 例题: NC116652 uva11038 How many 0's NC15035 送分了QAQ NC20669 诡异数字 NC20665 7的意志 NC17385 Beauti ...
- 【水】【SCOI】 精简题解
第二弹 [SCOI2009]生日快乐 搜索.递归划分问题. [SCOI2009]游戏 记忆化搜索.枚举素因子,DP. [SCOI2009]windy数 数位DP,分块统计. [SCOI2009]最长距 ...
最新文章
- DCGAN in Tensorflow生成动漫人物
- macOS下Apache+nginx+mysql+php多版本切换的配置
- 使用Apollo通过WebSocket通过STOMP轻松进行消息传递
- javascript:void(0) 含义
- 2dpca的matlab代码,2DPCA人脸识别的matlab代码
- Extreme Programming
- 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
- HDU2093 考试排名【排序】
- Eclipse中ICTCLAS 2011 的java调用
- COMSOL模拟气流可视化
- office2010c盘_Win10官方精简winxp ghost office2010系统流出:C盘装完梦回XP
- 企业邮箱怎么换服务器,如何更换企业邮箱
- 查询ip区间的ip地址的sql语句
- html的锚标记,HTML验证锚标记
- 色彩可视化 | 30DayMapChallenge
- 信息学奥赛一本通1176题——谁考了第k名
- 大数据开发就业:大数据开发有哪些岗位
- iPhone SDK 包含哪些东西
- SDSoC软硬件协同设计流程系列——1.基于SDSoC的软硬件协同设计流程简介
- TCP/IP之蓟辽督师 转
热门文章
- 蒙太奇服务器维修,蒙太奇服务器多台互连导片方法
- java中的常用类-1
- 详解keras中的Mask机制
- 我所学到的EC-2(个人学习总结,不能保证正确,欢迎大佬指正)
- java实现打印机打印发票路径
- 如何使用CorelDRAW 2019绘制谷歌浏览器Logo
- vue:hadoop@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js
- Codeforces Round #143 (Div. 2) C. To Add or Not to Add 胡搞
- go: no such tool “compile“(一次糟糕体验)
- Node-RED使用指南:6:配置与设定总结:运行环境配置