Câu 63. Điểm giao nhau giữa 2 đoạn. – Ôn tập học kì 1 NH 2022-2023 – 11A6
Câu 63: Nhập bốn số nguyên A,B,C,D (A<B, C<D). Tính xem có bao nhiêu số nguyên thuộc đọan giao [A;B] 󠆄∩ [C;D], tức là có bao nhiêu số nguyên x thỏa mãn: A ≤ x ≤ B và C ≤ x ≤ D.
| INPUT | OUTPUT | GIẢI THÍCH |
| A=1; B=6 ; C=3; D=5 | 3 | [1;6] ∩ [3;5] = [3;5] Có 3 số nguyên thuộc [3;5] |
Hướng dẫn giải:
Ta thấy nếu
x ϵ [A;B] <–> A ≤ x ≤ B
x ϵ [C;D] <–> C ≤ x ≤ D
Khi đó: x ϵ [A;B] ∩ [C;D] <–> max [A;C] ≤ x ≤ min [B;D] lúc này max [A;C] > min [B;D] –> Không có số nào thỏa mãn max [A;C] ≤ x ≤ min [B;D]. Ngược lại thì có min [B;D] – max [A;C]
#Câu 63 - Điểm giao nhau giữa 2 đoạn.
# Đoạn thứ nhất từ A --> B
A,B,C,D=map(int,input("Nhập điểm A,B,C,D:").split())
print("Ta có đoạn thứ nhất là: [",A,";",B,"]")
# Đoạn thứ hai từ C --> D
print("Ta có đoạn thứ hai là: [",C,";",D,"]")
print("------------------------------------")
doan_AC=max(A,C)
doan_BD=min(B,D)
if doan_AC>doan_BD:
print("Không có điểm giao giữa 2 đoạn này")
else:
sodiemgiao=doan_BD-doan_AC+1
print("Số điểm giao của [{};{}] và [{};{}] là: {}".format(A,B,C,D,sodiemgiao))
Bài làm của nhóm Tiên, Lãm, Đ.Huyền, Oanh, Nhi, Trinh
a,b,c,d=map(int,input().split())
if c<=b and a<=d :
print(min(b,d)-max(a,c)+1)
else:
print(-1)
Bài làm của nhóm Bảo, Thủy, Trâm, T. Huyền
a,b,c,d=map(int,input('Nhap').split())
if a<b<c<d:
print('0')
elif a<=c<=b<=d:
print(b-c+1)
elif c<=a<=b<=d:
print(b-a+1)
elif a<=c<=d<=b:
print(d-c+1)
if c<d<a<b:
print('0')
elif b<=d<=a<=c:
print(a-d+1)


