Content

有一个长度为 \(n\) 的数字串 \(s\),求出有多少个子串能够被 \(4\) 整除。

数据范围:\(1\leqslant n\leqslant 3\times 10^5\)。

Solution

众所周知,如果最后两位数能够被 \(4\) 整除,这个数也能够被 \(4\) 整除,所以我们只需要看最能被 \(4\) 整除的长度为 \(1\) 或者 \(2\) 的子串有多少个就好。

设能被 \(4\) 整除的长度为 \(1\) 的子串的个数是 \(n_1\),能被 \(4\) 整除的长度为 \(2\) 的子串的个数是 \(n_2\) 且第 \(i\) 个子串的最高位在原串的位置是 \(p_i\),答案就是 \(\sum\limits_{i=1}^{n_2}p_i+n_1\)。

Code

string s;
long long ans; int main() {
//This program is written in Windows 10 by Eason_AC
cin >> s;
int len = s.size();
_for(i, 0, len - 1) {
if(!((s[i] - '0' + (s[i - 1] - '0') * 10) % 4)) ans += i;
if(!((s[i] - '0') % 4)) ans++;
}
writell(ans);
return 0;
}

最新文章

  1. bootstrap-modal 学习笔记 源码分析
  2. LeetCode:Search in Rotated Sorted Array I II
  3. Compound Interest Calculator3.0续
  4. (C# File) 文件操作
  5. AutoCAD.NET二次开发错误集锦
  6. Javascript Basic Operation Extraction
  7. SQL Server2008 程序设计 汇总 GROUP BY,WITH ROLLUP,WITH CUBE,GROUPING SETS(..)
  8. PHP全局变量
  9. 【桌面虚拟化】之三 Persistent vs NonP
  10. [Q]无法卸载怎么办
  11. SCU 1069 POJ 2955 Brackets
  12. JS判断手机当前的系统类型
  13. 面试之路(7)-BAT面试题之计算机的三大原则
  14. Golang 入门 : 结构体(struct)
  15. Python3学习笔记02-基础语法
  16. ado.net调用返回多结果集的存储过程
  17. RDMA的原理、传输与Verbs
  18. Code Signal_练习题_absoluteValuesSumMinimization
  19. VMware桥接模式下主机和和虚机间互相ping不通的处理方法
  20. CentOS7怎么修改命令行启动

热门文章

  1. 『学了就忘』Linux文件系统管理 — 57、Linux文件系统介绍
  2. 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
  3. 探索JavaScript执行机制
  4. nvm安装以及管理多版本node教程
  5. Atcoder Grand Contest 015 F - Kenus the Ancient Greek(找性质+乱搞)
  6. mGWAS研究思路
  7. Linux运维工程师面试题整理
  8. 进阶版的java面试
  9. 强化学习实战 | 自定义Gym环境
  10. hive向mysql导入数据sqoop命令出错