Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int table[mx][22];
- void init(int n){
- for (int i=0;i<n;i++){
- table[i][0] = ara[i];
- }
- int k = 20;
- for(int j = 1; j <= k; j++) {
- for(int i = 0; i <= n - (1 << j); i++)
- table[i][j] = __gcd(table[i][j - 1], table[i + (1 << (j - 1))][j - 1]);
- }
- }
- int query(int L, int R, int n){
- int ans = 0;
- int k = 20;
- for(int j = k; j >= 0; j--) {
- if(L + (1<<j) - 1 <= R) {
- ans = __gcd(ans, table[L][j]);
- L += 1 << j;
- }
- }
- return ans;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement