# NODK
tác giả : Nguyễn Minh Thiên - THPT chuyên Hà Tĩnh
## Tóm tắt đề :
Hãy tính tổng các số không chia hết cho $k$ trong khoảng từ $L$ đến $R$
## Subtask
- subtask 1 : $L \leq R \leq 10^6$, $k \leq 10^9$
- Subtask 2 : $L \leq R \leq 10^9$, $k \leq 10^9$
## Subtask 1 : $L \leq R \leq 10^6$, $k \leq 10^9$
### Thuật toán:
1. Duyệt tất cả các số từ $L$ đến $R$.
2. Với mỗi số kiểm tra xem số đó có chia hết cho số $k$ không. Nếu không tăng tổng lên.
---
### Code C++:
```cpp
int L, R, k;
cin >> L >> R >> k;
long long sum = 0;
for(int i = L; i <= R; i++)
{
if (i % k != 0)
{
sum += i;
}
}
cout << sum;
```
---
## Subtask 2 : $L \leq R \leq 10^9$, $k \leq 10^9$
### Thuật toán:
để tính tổng các số không chia hết cho $k$ trong khoảng từ $L$ đến $R$ ta chỉ cần tính tổng các số trong khoảng $[L; R]$ rồi trừ cho tổng các số chia hết cho $k$ trong khoảng $[L; R]$
---
### Code C++:
```cpp
long long L, R, k;
cin >> L >> R >> k;
long long sum = (R - L + 1) * (L + R) / 2;
long long l = ((L + k - 1) / k) * k;
long long r = (R / k) * k;
if (l > r)
{
cout << sum;
}
else
{
long long sumk = ((r - l) / k + 1) * (l + r) / 2;
cout << sum - sumk;
}
```
---