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


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

相关文章
|
7月前
数字游戏2(数位dp)
数字游戏2(数位dp)
45 0
|
2月前
lanqiao OJ 182 小朋友崇拜圈
lanqiao OJ 182 小朋友崇拜圈
32 2
|
6月前
【洛谷 P1781】宇宙总统 题解(高精度+结构体排序)
在宇宙总统竞选中,需计算得到最高票者。程序接收$n$($1\leq n\leq 20$)个候选人及其票数,使用自定义比较器`cmp`对结构体数组`vote`按票数长度排序。样例输入5人,票数分别为98765、12365、87954、1022356、985678,输出显示编号为4的候选人(票数1022356)获胜。代码中,结构体`S`包含候选人ID和票数字符串,通过`sort`函数及`cmp`函数按票数长度降序排列,输出首位即为胜者。
40 0
|
6月前
|
机器学习/深度学习
【Acwing积累】第一周(完全数、只出现一次的字符)
【Acwing积累】第一周(完全数、只出现一次的字符)
|
7月前
|
算法
第十四届蓝桥杯集训——for——判断质数/素数
第十四届蓝桥杯集训——for——判断质数/素数
66 0
|
7月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 回文数(不要小看回文数)
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 回文数(不要小看回文数)
36 0
|
7月前
蓝桥备战--分糖果OJ2928 贪心 分类讨论
蓝桥备战--分糖果OJ2928 贪心 分类讨论
72 0
|
7月前
|
机器学习/深度学习
蓝桥杯-2/14天-完全平方数【另类思路】
蓝桥杯-2/14天-完全平方数【另类思路】
LeetCode 周赛 353(2023/07/09)看似没考 LIS 最长递增子序列,好像又考了
* 往期回顾:[LeetCode 单周赛第 352 场 · 一场关于子数组的专题周赛](https://mp.weixin.qq.com/s/0KIaUMEpLZw6poHs3cc7MA)
66 0
LeetCode 周赛 353(2023/07/09)看似没考 LIS 最长递增子序列,好像又考了
|
算法
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
《蓝桥杯每日一题》KMP算法·AcWing 141. 周期
137 0