Shiftmul errore output

Stavo cercando di fare il subtask 3 dove D=0, quindi semplicemente B[i] sarà A[i] elevato a K che sarebbe il numero di volte che devono essere svolte le operazioni; però mi da errore nell’output

#include <vector>
#include <iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;

vector<int> execute(int N, int K, int D, vector<int> A) {
 	vector<int> B(N);
	long long int gg=0;
	long long int mod=1000000007;
	for(int i=0;i<N;i++)
		B[i]=1;
	if(D==0)    //questa è la parte che dovrebbe risolvere il subtask 3
	{	
		long long int ris=0;
		for(int i=0;i<N;i++)
		{
		    A[i]%mod;
			ris=pow(A[i],K);
			B[i]=((B[i]%mod)*(ris%mod))%mod;
		}
	}
	else
	{
	    for(int l=0;l<K;l++)
	    {
		    for(int i=0;i<N;i++)
		    {
			    A[i]=A[i]%mod;
			    B[i]=B[i]%mod;
			    B[i]=((B[i]%mod)*(A[i]%mod))%mod;
		    }
		    for(int j=0;j<D;j++)
		    {
			    gg=A[N-1]%mod;
		
			    for(int q=N-1;q>=1;q--)
			    {
				    A[q]=A[q-1]%mod;
				
			    }
			    A[0]=gg%mod;
		    }
	    }
	}
	for(int i=0;i<N;i++)
	{
		B[i]=B[i]%mod;
	
	}
	return B;	
	
   
}

pow non va bene se l’esponente è molto grande e mette la risposta in un float.
Le prossime volte, prima di aprire 3 thread sullo stesso problema prova a guardare se su internet ci sono informazioni utili. In questo caso, calcolare a^b \mod mod mi sembra abbastanza generico.
Magari se si tratta dello stesso problema, aggiungi un messaggio al thread già aperto.

1 Mi Piace