You are on page 1of 6

Cho dãy .

Tìm đoạ n dà i nhấ t có


Cẩ n thậ n TH , khi đó vẫ n đượ c chấ p nhậ n
Nếu : Có thể thay bằ ng
Thuậ t toá n:
Viết hà m Check(): Trả về true nếu tồ n tạ i
mộ t đoạ n liên tiếp độ dà i trong có
Dù ng thuậ t toá n tìm kiếm nhị phâ n, tìm
lớ n nhấ t mà

2
1 𝑘𝑘+1 2 𝑘2𝑘+1 𝑛
k 𝑎𝑖 k k ≤𝑘
𝐺𝐶𝐷= 𝑓 [ 𝑖 ]

𝐺𝐶𝐷=𝑔 [ 𝑖 ]
Hà m Check():
Chia dãy thà nh cá c “khú c” độ dà i , riêng khú c cuố i độ dà i có thể .
Chỉ số là chỉ số đứ ng đầ u khú c nếu
Chỉ số là chỉ số đứ ng cuố i khú c nếu
Vớ i mỗ i chỉ số , tính:
là củ a cá c phầ n tử từ đầ u khú c tớ i vị trí .
là củ a cá c phầ n tử từ vị trí tớ i cuố i khú c.
3
for (int i = 1; i <= n; ++i)
if ((i - 1) % k == 0)
f[i] = a[i];
else
f[i] = GCD(f[i - 1], a[i]);
for (int i = n; i >= 1; --i)
if (i % k == 0 || i == n)
g[i] = a[i];
else
g[i] = GCD(a[i], g[i + 1]);
4
𝑖 𝑗

GCD =
GCD =

Hà m Check():
Xét mọ i đoạ n độ dà i
for (i = 1; i <= n – k + 1; ++i)
j = i + k – 1;
Kiểm tra củ a có khô ng? Chỉ cầ n tính
5
𝑎𝑖
GCD =

GCD(, )

You might also like