Tính tổng các số nguyên nhỏ hơn n chia hết cho a nhưng k chia hết cho b

Kết quả khác nhau mà :smile:

:slight_smile: :slight_smile: Nhưng mà sao bạn kia làm không ra nhỉ :frowning:

Làm vs công thức F loằng ngoằng ở trên thử so sánh xem :).

1 Like

eo ơi, input 2 4 1234
out ra 0
Anh xem thử ?

Cơ mà anh tìm công thức hay quá vậy :v

int UCLN(int a, int b)
{

    a = abs((double)a);
    b = abs((double)b);
    if (a==0 ||b==0)
        return a+b;
    while (a !=b) {
        if(a>b)
            a=a-b;
        else
            b=b-a;
    }
    return a;
}

int F(int n, int x)
{
    int k=(n-1)/x;
    return x*k*(k+1)/2;
}

int main()
{
    int a, b, n;
    printf("Input a, b, n: ");
    scanf("%d %d %d", &a, &b, &n);

    int g = UCLN(a, b);
    int S = F(n, a) - F(n, g);
    printf("%d", S);

    return 0;
}

thấy kết quả đúng mà nhỉ :joy:

Tất nhiên ucln thì nó âm hoặc = 0. Anh nhầm g đó là bcnn. Còn công thức thì tính tổng nhỏ hơn n chia hết cho a là F(n,a), tổng nhỏ hơn n chia hết cả a và b là F(n,g) lấy trừ thì dc tổng chia hết cho a mà không chia hết cho b :slight_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?