Need help in this Brute Forceish Solution (WA)


#1
#define M 1000000007

int multiplyDiv(int n){
    long long prod= 1;
    for(int i=1; i*i<=n; i++){
        if(n%i==0){
            if(n/i==i) prod=(prod*i)%M;
            else{
                prod=(prod*i)%M;
                prod=(prod*(n/i))%M;
            }
        }
    }
    return prod;
}

vector<int> Solution::solve(vector<int> &A, vector<int> &B){
    vector<int> G;
    int n= A.size();
    for(int i=0; i<n; i++){
        for(int j=n-i; j>=1; j--){
            G.push_back(A[n-i-1]);
        }
    }
    for(int i=0; i<G.size(); i++){
        G[i]= multiplyDiv(G[i]);
    }
    sort(G.begin(), G.end(), greater<int>());
    vector<int> ans;
    for(int i=0; i<B.size(); i++){
        ans.push_back(G[B[i]-1]);
    }
    return ans;
}