#include <bits/stdc++.h>
#define FASTIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
using namespace std;
#define ll long long
const int MAXN = 100005;
ll arr[MAXN];
int main(){
FASTIO;
ll p, a, b, q, res = 0, sum = 0;
cin >> p;
for (int i = 0; i < p; i++) {
cin >> arr[i];
sum += arr[i];
}
cin >> a >> b;
q = (b - a) / p;
b -= q * p;
res += q * sum;
if (a < 0) {
q = (-a + p - 1)/p;
a += q*p;
b += q*p;
}
for (int i = a; i <= b - 1; i++){
res += arr[i % p];
}
cout << res;
return 0;
}
1. [a, b]에서 주기만큼 먼저 계산해서 b를 갱신한다.
2. a를 0보다 크거나 같은 범위로 옮긴다. (i % p로 처리할 수 있음)
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2504번 괄호의 값 (0) | 2024.07.10 |
---|---|
[BOJ] 18115번 카드 놓기 (0) | 2024.07.10 |
[BOJ] 15276번 Palindrmoic Password (0) | 2024.07.10 |
[BOJ] 30445번 행복 점수 (0) | 2024.07.10 |
[BOJ] 14503번 로봇 청소기 (0) | 2024.07.09 |