用了dp,不知道问题出在哪里,只有30分
#include <iostream>
using namespace std;
int f1[128], f2[128];
int main() {
int p, l;
long long ans = 0;
string s;
cin >> p >> s;
l = s.size();
for (int i = 0; i < l; i++) {
int a = (s[i] - '0') % p;
f2[a] = 1;
for (int j = 0; j < p; j++) {
f2[j] += f1[(j + p - a) % p];
}
ans += f2[0];
for (int j = 0; j < p; j++) {
f1[j] = f2[j], f2[j] = 0;
}
for (int j = 0; j < p; j++) {
int t = f1[j];
f1[j * 10 % p] += t, f1[j] -= t;
}
}
cout << ans;
return 0;
}