15个WA,30分,求助!
查看原帖
15个WA,30分,求助!
1046228
yezicong1104楼主2024/6/25 20:54

用了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;
}
2024/6/25 20:54
加载中...