【每日一题】Problem 628B. New Skateboard

原题

解决思路

数学题
只要有两位数可以被 4 整除,那么以该两位数结尾的任何数都可以被 4 整除,推导过程如下:
设 10x + y = 4z, 则对于任意的前置 n 有
10(10n + x) + y = 100n + 10x + y
该式必定能被 4 整除

#include <bits/stdc++.h>

int main() {
    std::string str; std::cin >> str;
    long long ans = 0;
    for (int i = 1; i < str.size(); ++i) {
        if (((str[i - 1] - '0') * 10 + (str[i] - '0')) % 4 == 0) ans += i;
    }
    for (int i = 0; i < str.size(); ++i) {
        if ((str[i] - '0') % 4 == 0) ++ans;
    }
    
    std::cout << ans << "\n";
    return 0;
}
posted @ 2023-07-29 00:02  HelloEricy  阅读(9)  评论(0编辑  收藏  举报