1

数値 k (k = 3 など) で割り切れる文字列の連続していないサブシーケンスを見つけたいと考えています。問題の修正と呼ぶことができますhttps://www.hackerrank.com/contests/w6/challenges/consecutive-subsequences/

たとえば、次のように入力します。

A = {1,2,3,4,1} k = 3

出力:

9

912,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;
}

必要な目標を達成するために、これに対する適切な変更または新しいアプローチ (またはコード) を提供していただけますか?

ありがとうございました :)

4

1 に答える 1