Ottimizzazione codice biglietti a milano 80/100

nell’invio del problema ricevo un punteggio pari a 80/100, quindi cosa potrei migliorare?

int compra(int N, int M, int A, int B) {

int prezzoMin = 0;
int bigliettiComprati = 0;

while(bigliettiComprati < N){
	if((N - bigliettiComprati) * A < B || M == 0){
		prezzoMin += (N - bigliettiComprati) * A;
		bigliettiComprati += (N - bigliettiComprati);
	}
	else{
		prezzoMin += B;
		bigliettiComprati += M;
	}
}

return prezzoMin;

}

Quel ciclo si può evitare, inoltre se MxA<=B che si può fare?

non ho capito M*A, poiché se M è il numero di biglietti compresi nel carnet e A il prezzo singolo di ogni biglietto, non avrebbe senso vedere il prezzo dei biglietti del carnet pagati singolarmente, il carnet ha gia un prezzo(B). Probabilmente non ti ho capito io, se cosi ti chiedo se puoi darmi più informazioni e ti ringrazio per la pazienza :slight_smile: .

Nel mondo di tutti i giorni e quindi anche a Milano quel controllo non ha senso, sono d’accordo con te, ma questo è abbastanza un altro mondo e nelle assunzioni non c’è niente che garantisca che quella disequazione sia verificata!
Cosa fare se non lo è ?
P.S. vedi il terzo esempio.