Problema Figonacci (70/100) C

Ho un problema con Figonacci, il mio codice risolve tutti i subtask a parte il quarto in cui lo 026 e lo 027 mi danno Output non corretto, non vedo dove possa essere il problema visto che presumo che lo 028 usi numeri piu elevati dello 027 e dello 026 e il mio algoritmo si basa sui numeri precedenti.

int enumera(int N, int M) {
    int gN;
    int gPrec = 1;
    int somma = -1;
    int i;
	if(N == 0){
		return (-1 % M + M) % M;
	}else if(N == 1){
		return 0;
	}else if(N == 2){
	    return (1 % M + M) % M;    
	}else{
		for(i = 3 ; i <= N ; i++){
		    gN = ((((i - 1) * gPrec) % M + M) % M) - ((somma % M + M) % M);
		    somma = ((somma % M + M) % M) + ((gPrec % M + M) % M);
		    gPrec = (gN % M + M) % M;
		}
	return (gN % M + M) % M;
	}
}

Hai messo il modulo ovunque ( :laughing: ) ma non hai considerato che anche i può superare M. In un calcolo manca quindi un modulo; lascio a te il compito di trovarlo.

Consentimi comunque di notare che non è necessario il modulo per restituire -1, 0 o 1. Inoltre, osserva che le assunzioni del problema garantiscono N \ge 2.

1 Mi Piace

Nel dubbio modulo :upside_down_face: