1
我想查找可被數字k整除的字符串的非連續子序列(比如k = 3)。我們可以把它叫做一個修改問題https://www.hackerrank.com/contests/w6/challenges/consecutive-subsequences/獲得一個可被k整除的非連續子序列
例如,輸入:
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;
}
您能否爲此提供一個合適的修改或新的方法(或代碼)以實現所需的目標?
謝謝:)
代碼是C++,並且問題似乎沒有與Java的任何直接連接。爲什麼你的文章標籤爲'Java'? –
我認爲12341的答案應該是9.! –