Problema "Crittografia RSA"

Ho provato a risolvere il problema più volte, ma il programma ottiene sempre e solo 0/100. Potreste aiutarmi? Vi lascio il programma qui.

#include <iostream>
#include <cmath>
using namespace std;
void decifra(int N, int d, int L, int messaggio[], char plaintext[]){
	int i;
	for(i=0;i<L;i++){
		plaintext[i]=pow(messaggio[i],d);
		plaintext[i]=plaintext[i]%N;
	}	
	plaintext[L]='/0';
}

Sei sicuro che plaintext[i] (che è di tipo char) possa contenere il risultato di pow(messaggio[i],d); ?
Vedi bene le assunzioni.
comunque così fa un pò di punti:

#include <iostream>
#include <cmath>
using namespace std;
void decifra(int N, int d, int L, int messaggio[], char plaintext[]){
	int i;
	for(i=0;i<L;i++){
		plaintext[i]=(char)(((int)pow(messaggio[i],d))%N);
		//plaintext[i]=plaintext[i]%N;
	}	
	//plaintext[L]='0';
}

Non credo che sia quello il problema, visto che se si inserisce un intero in una variabile char in teoria quella variabile sarà considerata come l’ASCII corrispondente all’intero, che è quello che serve per il problema, comunque grazie dell’aiuto.

Quello che non va è di utilizzare la funzione pow() del c++. Per risolvere il problema guarda questa pagina.

Ho usato le funzioni della pagina e ora dà 100/100, grazie mille.