我想找到可被数字 k 整除的字符串的非连续子序列(比如 k = 3)。可以将其称为对问题的修改https://www.hackerrank.com/contests/w6/challenges/consecutive-subsequences/
例如,输入:
A = {1,2,3,4,1} k = 3
输出:
9
9 因为12,24,21,141,123,231,1231
等是可能的
我对连续子序列所做的是
long long get_count(const vector<int> & vec, int k) {
vector<int> cnt_mod(k, 0);
cnt_mod[0] = 1;
int pref_sum = 0;
for (int elem : vec) {
pref_sum += elem;
pref_sum %= k;
cnt_mod[pref_sum]++;
}
long long res = 0;
for (int mod = 0; mod < k; mod++)
res += (long long)cnt_mod[mod] * (cnt_mod[mod] - 1) / 2;
return res;
}
您能否为此提供合适的修改或新方法(或代码)以实现所需的目标?
谢谢你 :)