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