Acwing第53场周赛 T2:整除子串反思

简介: Acwing第53场周赛 T2:整除子串反思

给定一个由数字组成的字符串 s,请你计算能够被 4 整除的 s 的子串数量。


子串可以包含前导 0。


例如,如果 s 为 124,则满足条件的子串有 4 个:12,4,24,124;如果 s 为 04,则满足条件的子串有 33 个:0,4,04。


输入格式


一个由数字组成的字符串 s。


输出格式


一个整数,表示满足条件的子串数量。


数据范围


前 4 个测试点满足 1≤|s|≤10。

所有测试点满足 1≤|s|≤3×105

输入样例1:

124

输出样例1:

4

输入样例2:

04

输出样例2:

3

输入样例3:

5810438174

输出样例3:

9

做的时候没出来,后来去y总直播间,


学到了:原来就是一个小学奥数题hh;


如果x(x的长度大于等于2)能整除4,那么x末尾两位组成的数字能整除4(充要条件)


待会儿会证明(并且研究能被N整除的数的特征)


那么只需要遍历一遍字符串就可以了


如果末尾两个符合添加,res+=i(i种选择)


注意两种特判:遍历时i = 0情况,由于遍历时,是研究以x[i]结尾的所有子串的情况,而以x[i]结尾的子串分两类,一类长度为1,一类长度>=2,长度为1特判一下;

#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
    ll res = 0;
    string x;
    cin >> x;
    if (x[0]%4==0) res++;
    for (int i = 1;i<x.size();i++)
    {
       if (((x[i]-'0')+10*(x[i-1]-'0'))%4 == 0) 
            res += i;
        if (x[i]%4==0) res++;
    }
    cout<<res;
    return 0;
}

研究能被N整除的数的特征(研究自然数)

N            限定条件 下面附手写证明图


05655f918fdb466fa06de8bf8ccf081d.jpg

image.jpeg


奔赴热爱 奔赴山海!体会数学之美 算法之美

相关文章
AcWing 第 15 场周赛 3827. 最小正整数(思维)
AcWing 第 15 场周赛 3827. 最小正整数(思维)
96 0
|
9月前
|
C++ 存储
力扣C++|一题多解之数学题专场(1)
力扣C++|一题多解之数学题专场(1)
69 0
力扣C++|一题多解之数学题专场(1)
|
9月前
|
C++ 存储 Serverless
力扣C++|一题多解之数学题专场(2)
力扣C++|一题多解之数学题专场(2)
70 0
力扣C++|一题多解之数学题专场(2)
|
9月前
蓝桥备战--分糖果OJ2928 贪心 分类讨论
蓝桥备战--分糖果OJ2928 贪心 分类讨论
94 0
蓝桥杯分巧克力(暴力枚举解法+二分法)
问题 F 时间限制: 1Sec 内存限制: 128MB 提交: 66 解决: 28
|
9月前
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
考研高数之无穷级数题型三:将函数展开成幂级数和傅里叶级数(题目讲解)
147 0
|
9月前
|
机器学习/深度学习
蓝桥杯-2/14天-完全平方数【另类思路】
蓝桥杯-2/14天-完全平方数【另类思路】
|
移动开发 算法 测试技术
二分查找算法 四种题型六道题目总结,从此二分不迷路!
二分查找算法 四种题型六道题目总结,从此二分不迷路!
171 0
|
算法 JavaScript 前端开发
日拱算法:解两道“杨辉三角”题
什么是“杨辉三角”,想必大家并不陌生~~ 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
Leetcode每日一题——最长和谐子序列
和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。
102 0

热门文章

最新文章