Processing math: 80%
Solutions of GCD - ReimuOJ: Reimu Online Judge

Solutions of GCD

Select solution language

Write solution here.


bean    Created at    3 likes

Nhận xét: Với mỗi số x bất kì, ta có tối đa log2(x) lần thay đổi giá trị GCD Vậy, với mỗi vị trí i, ta có thể tìm xem lần thay đổi GCD tiếp theo nằm ở đâu, và nhảy nhanh đến đấy. Để xử lí việc này, ta có thể kết hợp cấu trúc dữ liệu Sparse Table và thuật toán tìm kiếm nhị phân. Với mỗi lần tìm kiếm này, ta mất O(log(n)), do ta có thể dùng Sparse Table để tìm kiếm GCD của khoảng trong O(1), và tìm vị trí khiến cho GCD thay đổi trong log(n) Tổng độ phức tạp: O(nlog(n)log(max(a)))5107 Code tham khảo: cpp#cludebits/stdc++.husingnamespacestd;ma(){c.tie(0)syncwithstdio(0);n;cn;r<>a(n);for(i=0;i<n;i++){ca[i];}constmax