• + 1 comment

    Some things to notice: Since we only need to take note whether find(x,y) is odd or even, and since find(x,y) function is just repeated exponentiation with base arr[x]: 1. the result will be even if arr[x-1] (-1 because indices start from 1) is even and the next array element arr[x] is not zero (otherwise we end up getting 1). 2. the result will be odd if arr[x-1] is odd or if arr[x-1] is even and arr[x] is odd (as I explained in 1 above). Then the code is simple to be honest: In C++:

    vector<string> solve(vector<int> arr, vector<vector<int>> queries) {
        vector<string> result;
        
        for (auto k : queries){
            int x = k[0], y = k[1];
            if (arr[x-1]%2 != 0) result.push_back("Odd");
            else if (x < y && arr[x] == 0) result.push_back("Odd");
            else result.push_back("Even");
        }
        return result;
    }