수열
Summary
수열 공식은 구현보다 overflow가 더 위험하다.
합은long으로 계산한다.
등차수열 합
long sum = (long) n * (first + last) / 2;1부터 n까지 합:
long sum = (long) n * (n + 1) / 2;등비수열 합
Warning
등비수열은 값이 매우 빨리 커진다.
mod가 있으면 매 곱셈마다 mod를 적용한다.
long sum = 0;
long cur = first;
for (int i = 0; i < n; i++) {
sum += cur;
cur *= ratio;
}mod가 있는 경우:
long sum = 0;
long cur = first % mod;
for (int i = 0; i < n; i++) {
sum = (sum + cur) % mod;
cur = (cur * ratio) % mod;
}주의점
(1 + n) * n / 2는 int overflow 가능
등비수열은 long도 쉽게 넘음
mod 조건이 있으면 중간마다 mod