Программа для поиска суммы в бесконечном массиве в заданных диапазонах

#arrays #c 14

Вопрос:

Постановка задачи: Дано на Hackrearth

Задан массив A из N целых чисел, и вы также определили новый массив B как объединение массива A бесконечное число раз. Например, если данный массив A равен [1,2,3] then, то бесконечный массив B равен [1,2,3,1,2,3,1,2,3,.......] .

Теперь вам дано Q запросов, каждый запрос состоит из двух целых L чисел и R . Ваша задача-найти сумму подмножества от индекса L до R (оба включительно) в бесконечном массиве B для каждого запроса.

Примечание: Поскольку значение этого вывода очень велико, выведите ответ в виде модуля 10^9 7;

Решение:

 vector<int> sumInRanges(vector<int> amp;arr, int n, vector<vector<long long>> amp;qrr, int q) {
   
    int mod=1e9 7;

    vector<long long>sarr(n 1,0);    // to store the prefix sum
    
    for(int i=1;i<=n;i  )
    {
        sarr[i]=(sarr[i-1] arr[i-1])%mod;
    }
    
    vector<int>ans;               //to store the final answer         
    
    for(int i=0;i<q;i  )
    {
        long long l,r;
        l=qrr[i][0];
        r=qrr[i][1];
        
        long long grp=(r/n)%mod;
        long long res=(grp*sarr[n])%mod;
        res=(res sarr[r%n])%mod;
        long long rsum=res;
        
        l-=1;
        grp=(l/n)%mod;
        res=(grp*sarr[n])%mod;
        res=(res sarr[l%n])%mod;
        long long lsum=res;

        int sum=((rsum-lsum mod)%mod);
        ------------------------------
        ans.push_back(sum);
    }

    return ans;
}
 

Мои сомнения:
Я решил данную проблему так, что я сначала нашел префикс такие суммы, а затем найти rsum расстояние до R, соответствующей бесконечное множество В и lsum до Л-1 соответствует бесконечное множество B, а затем найти окончательный ответ, (rsum - lsum)%mod но у меня есть некоторые тестовые случаи, как Вашингтон, но когда я сделал, как это (rsum - lsum mod)%mod все тесты случаев прошло, мои сомнения, это то, что какое значение имеет добавление «мод» в выделенную строку в растворе.

Комментарии:

1. Пожалуйста, укажите язык, который вы используете (я полагаю, это C ).

2. Отрицательные операнды, чтобы % не делать того, чего вы ожидаете.