4388: GESP C++六级样题_4亲朋数

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

样例输入 复制

2
102

样例输出 复制

5

提示

#include <iostream>
using namespace std;
char S[1000001];
long long st_old[128];
long long st_new[128];
int main() {
    int p = 0;
    cin >> p;
    cin >> S;
    for (int i = 0; i < p; i++)
        st_old[i] = 0;
    long long res = 0;
    for (int t = 0; S[t] != '\0'; t++) {
        for (int i = 0; i < p; i++)
            st_new[i] = 0;
        int d = S[t] - '0';
        for (int i = 0; i < p; i++)
            st_new[(i * 10 + d) % p] += st_old[i];
        st_new[d % p]++;
        res += st_new[0];
        for (int i = 0; i < p; i++)
            st_old[i] = st_new[i];
    }
    cout << res << endl;
    return 0;
}