ho mandato il mio codice è riesce a risolvere solo alcuni casi è il punteggio risulta 25 su 100 perché appunto risolve solo i primi casi e gli ultimi no e non capisco perché. qualcuno mi può aiutare?
il codice senza il main è questo:
void decifra(int N, int d, int L, int* messaggio, char* plaintext) {
int k;
for(int i=0; i<L; i++){
k=pow(messaggio[i],d);
k=k%N;
plaintext[i]=char(k);
}
plaintext[L]=‘\0’;
}
Chiaramente 10^{100\,000} è un numero intero finito.
Il fatto che il programma stampi inf è una conseguenza del fatto che i double, occupando una quantità finita di memoria, hanno una precisione limitata. In particolare sono in grado di mantenere precisione all’intero fino a 2^{53}, e il numero più grande che possono rappresentare (a parte +\infty) è circa 10^{308}.
Devi riuscire a svolgere le operazioni senza perdere precisione.