Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng các số tự nhiên ≤ N có dư R khi chia cho K trong C++


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