Cho N, K, R. Tính tổng các số tự nhiên ≤ N mà chia cho K dư R (i % K == R).
Ví dụ
Đầu vào: N = 14, K = 4, R = 1
Đầu ra: 28
Giải thích: Các số ≤ 14 chia 4 dư 1: 1, 5, 9, 13. Tổng = 28
Phương pháp tối ưu
Thay vì lặp từ 1 đến N, lặp từ R đến N với bước nhảy K: i = R, R+K, R+2K...
Ví dụ mã nguồn
#include <iostream>
using namespace std;
int tinhTong(int N, int K, int R) {
int tong = 0;
for (int i = R; i <= N; i += K) {
if (i % K == R) tong += i;
}
return tong;
}
int main() {
int N = 14, K = 4, R = 1;
cout << "Tổng các số ≤ " << N << " chia " << K << " dư " << R << " = "
<< tinhTong(N, K, R);
return 0;
}
Kết quả
Tổng các số ≤ 14 chia 4 dư 1 = 28