假设分成如下三段:

[1..i][i+1..j][j+1..n]

考虑中间那一段,设f[i]为前i位组成的数模q的值,pow[i]为$10^i$模q的值,那么有:

f[j]-f[i]*pow[j-i]=0

f[j]*pow[i]=f[i]*pow[j]

f[j]*inv(pow[j])=f[i]*inv(pow[i])

枚举i,j,若[j+1..n]是r的倍数,[1..i]是p的倍数,且f[j]*inv(pow[j])=f[i]*inv(pow[i])则可行。

注意特判前导零的情况,时间复杂度$O(n)$。

#include<cstdio>
#define N 1000010
int n,p,q,r,i,t,can1[N],can3[N],pow[N],f[N],inv[N],c[N];char a[N];long long ans;
int main(){
scanf("%d%d%d%d%s",&n,&p,&q,&r,a+1);
for(i=1;i<=n;i++)a[i]-='0';
for(i=1;i<=n;i++){
t=(t*10+a[i])%p;
if(!t&&(i==1||a[1]))can1[i]=1;
}
for(pow[0]=i=1;i<=n;i++)pow[i]=pow[i-1]*10%r;
for(t=0,i=n;i;i--){
t=(t+pow[n-i]*a[i])%r;
if(!t&&(i==n||a[i]))can3[i]=1;
}
for(pow[0]=i=1;i<=n;i++)pow[i]=pow[i-1]*10%q,f[i]=(f[i-1]*10+a[i])%q;
for(inv[1]=1,i=2;i<q;i++)inv[i]=1LL*(q-inv[q%i])*(q/i)%q;
for(i=1;i<=n;i++)f[i]=1LL*f[i]*inv[pow[i]]%q;
for(i=2;i<n;i++){
if(can3[i+1]){
if(can1[i-1]&&!a[i])ans++;
ans+=c[f[i]];
}
if(can1[i-1]&&a[i])c[f[i-1]]++;
}
return printf("%lld",ans),0;
}

  

BZOJ4277 : [ONTAK2015]Cięcie的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. 4276: [ONTAK2015]Bajtman i Okrągły Robin

    4276: [ONTAK2015]Bajtman i Okrągły Robin Time Limit: 40 Sec  Memory Limit: 256 MBSubmit: 345  Solved ...

  3. Travis CI用来持续集成你的项目

    这里持续集成基于GitHub搭建的博客为项目 工具: zqz@ubuntu:~$ node --version v4.2.6 zqz@ubuntu:~$ git --version git versi ...

  4. CI Weekly #10 | 2017 DevOps 趋势预测

    2016 年的最后几个工作日,我们对 flow.ci Android & iOS 项目做了一些优化与修复: iOS 镜像 cocoapods 版本更新: fir iOS上传插件时间问题修复: ...

  5. CI Weekly #9 | 揭秘阿里 Docker 化实践之路

    2017年悄然而至,对 flow.ci 你有什么新的期待呢?新的一年,flow.ci会越来越强大好用,希望继续得到你的支持与反馈.最近,我们做了如下的「功能优化」与「问题修复」,看看有没有你想要的: ...

  6. CI Weekly #8 | CI/CD 技能进阶路线

    在使用 flow.ci 进行持续集成的过程中,也许你会遇到一些小麻烦.最近我们整理了一些常见问题在 flow.ci 文档之 FAQ,希望对你有用.如果你遇到其他问题,也可以通过「在线消息」或去 Git ...

  7. CI Weekly #7 | Instgram/Quora 等大公司如何做持续部署?

    终于,你们期待的 flow.ci iOS 项目持续集成 开始公测了.在这几个工作日, flow.ci 做了些许「功能优化」与「问题修复」,性能和体验都在持续优化中.比如: iOS 快速入门文档更新: ...

  8. CI Weekly #6 | 再谈 Docker / CI / CD 实践经验

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  9. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

随机推荐

  1. Codeforces 543 B. World Tour

    http://codeforces.com/problemset/problem/543/B 题意: 给定一张边权均为1的无向图. 问至多可以删除多少边,使得s1到t1的最短路不超过l1,s2到t2的 ...

  2. 【转载】ssh(安全外壳协议)

    http://baike.baidu.com/subview/16184/5909252.htm?fr=aladdin

  3. AC自动机(病毒侵袭 )

    题目链接:https://cn.vjudge.net/contest/280743#problem/B 题目大意:中文题目 具体思路:AC自动机模板题,编号的时候注意,是按照给定的id进行编号的.然后 ...

  4. weblogica

  5. elasticsearch安装servicewrapper插件

    1)下载elasticsearch-servicewrappergit clone https://github.com/elasticsearch/elasticsearch-servicewrap ...

  6. oracle行转列

    wm_concat()函数 --创建表 create table test(id number,name varchar2(20)); --插入数据 insert into test values(1 ...

  7. Project Euler Problem2

    Even Fibonacci numbers Problem 2 Each new term in the Fibonacci sequence is generated by adding the ...

  8. selnium远程机上传图片遇到的坑

    一般上传图片方法采取方案如下: input标签的file类型上传图片,使用对象的sendkeys+路径方法 使用js注入,再用使用对象的sendkeys+路径方法 使用autolt生成的exe,打开对 ...

  9. windows安装 Microsoft Visual c++

    第一种方法: 第二种方法: 参考链接 直接给一个2015版本的下载地址 https://blogs.msdn.microsoft.com/pythonengineering/2016/04/11/un ...

  10. 在IIS下部署SSL证书实现HTTPS

    在IIS下部署SSL证书实现HTTPS   HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.谷歌已经制定了一项长远的计划,它的最终目标是将所有通过HTTP协议呈现的网页标为“不安全” ...