Giả sử chúng ta có hai mảng gọi là nums1 và nums2. Chúng ta phải tìm số lượng giá trị thỏa mãn các điều kiện sau:
Các phần tử trong nums1 là ước của các phần tử được chọn
Các phần tử được chọn là ước của tất cả các phần tử của nums2
Vì vậy, nếu đầu vào là nums1 = [3,9] nums2 = [27, 81], thì đầu ra sẽ là 2 vì các số là 9 và 27, vì:
9 mod 3 = 0
9 mod 9 = 0
27 mod 9 = 0
81 mod 9 = 0
27 mod 3 = 0
27 mod 9 = 0
27 mod 27 = 0
81 mod 27 = 0.
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau:
- count := 0
- với i từ 1 đến 100, thực hiện
- flag := True
- với mỗi j trong nums1, thực hiện
- nếu i mod j khác 0, thì flag := False, thoát vòng lặp
- nếu flag đúng, thì với mỗi k trong nums2, thực hiện
- nếu k mod i khác 0, thì flag := False, thoát vòng lặp
- nếu flag đúng, thì count := count + 1
- trả về count
Ví dụ
Hãy xem triển khai sau để hiểu rõ hơn:
def solve(nums1, nums2):
count = 0
for i in range(1,101):
flag = True
for j in nums1:
if i%j != 0:
flag = False
break
if flag:
for k in nums2:
if k%i!=0:
flag = False
break
if flag:
count+=1
return count
nums1 = [3,9]
nums2 = [27, 81]
print(solve(nums1, nums2))
Đầu vào
[3,9], [27, 81]
Đầu ra
1