Gửi bài giải

Điểm: 5,00
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++

Trên mặt phàng tọa độ Oxy, cho 2 điểm A(m;n) và B(p;q). Vẽ đoạn thẳng AB.

Yêu cầu: Hãy xác định có bao nhiêu điểm có hoành độ và tung độ là các số nguyên dương thuộc đoạn thẳng AB (không kể 2 mút của đoạn thẳng AB).

Dữ liệu

  • Một dòng chứa 4 số nguyên dương m,n,p,q nằm trên một dòng (m<pn>q) mỗi số cách nhau 1 dấu cách. Trong đó m và n lần lượt là hoành độ và tung độ của điểm Ap và q lần lượt là hoành độ và tung độ của điểm B.

Kết quả:

  • Ghi ra một số k là số các điểm có tọa độ là các số nguyên dương theo yêu cầu trên.

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    vito120400  đã bình luận lúc 6, Tháng 1, 2024, 7:29

    code của bài này nha cả nhà

    include <iostream>

    include <cmath>

    int countIntegerPoints(int m, int n, int p, int q) {

    int deltaX = std::abs(p - m);
    int deltaY = std::abs(q - n);
    
    // Tính ước chung lớn nhất của deltaX và deltaY
    int gcd = 0;
    for (int i = 1; i <= deltaX && i <= deltaY; ++i) {
        if (deltaX % i == 0 && deltaY % i == 0) {
            gcd = i;
        }
    }
    
    // Số điểm có tọa độ nguyên dương trên đoạn thẳng AB (không kể 2 mút)
    int result = gcd - 1;
    
    return result;
    

    }

    int main() { int m, n, p, q; std::cin >> m >> n >> p >> q;

    int result = countIntegerPoints(m, n, p, q);
    
    std::cout << result << std::endl;
    
    return 0;
    

    }