1 条题解

  • 0
    @ 2023-8-7 22:37:39

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    unsigned r[2020], b = 1, m = 0, ans = 0; // 声明数组和变量
    string s;
    int main() {
        r[0] = 1; // 初始化r[0]为1,r数组用于记录每个余数出现的次数
        cin >> s; // 读取输入字符串
    
        for (int i = s.size() - 1; i >= 0; --i) { // 从字符串末尾开始遍历
            m = (m + (s[i] - '0') * b) % 2019; // 计算当前前缀对应的余数
            b = (b * 10) % 2019; // 计算下一个前缀对应的b值
            ans += r[m]; // 累加当前余数出现的次数
            ++r[m]; // 更新当前余数的出现次数
        }
        cout << ans << endl; // 输出结果
        return 0;
    }
    
    • 1

    信息

    ID
    456
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    6
    已通过
    0
    上传者