Probleme de calcul en C

Fermé
Nirv - 3 mars 2009 à 21:12
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 3 mars 2009 à 21:23
Bonsoir,

Je suis actuellement sur une épreuve de "logique", sur un site plutot actif qui propose différents challenges et le challenge est le suivant :

Pour valider, entrez le produit des restes des divisions euclidiennes de :
2^10 par 3
54^2003 par 7
2003^444002 par 149
1000000^184651 par 36931

Pour le premier, très simple, 2^10 = 1024, et modulo 3 = 1
Donc en gros c'est pour la suite que je bloque

J'ai essayé de faire un code en C pour me sortir les calculs mais ça bug a un moment, donc je mets mon code pour savoir si vous pouvez m'aider :

double nombre1 = pow(54,2003);
double resultat = nombre1 % 7;
printf("Le nombre est %lf ...", resultat);


Pow : Fonction permettent de calculer une puissance. (nombre, puissance)
Et % : opération modulo qui trouve le reste entier d'une division

Donc vlà, quand j'affiche le resultat, ça bug totalement.. J'ai bien mis un type "double" pour avoir un loong nombre au cas ou. Mais ça plante, ça me met exactement :
error: invalid operands to binary %
Et que 1erreur est présente.
Apparemment il ne reconnait pas l'opération %. Sauf que quand je fais une variante du style :
double resultat = 5 % 2;
Ca me met bien en résultat = 1..

Donc je comprends pas. Si quelqu'un pouvait me venir en aide, merci. (Je demande pas la solution du problème, juste comment résoudre mon probleme de programmation pour pouvoir résoudre ma petite épreuve :) )

Et si vous avez d'autres idées pour réaliser les calculs, n'hésitez pas ça peut m'aider ^^'. Mais j'avais décider de le faire en C.

Merci d'avance
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
3 mars 2009 à 21:23
Salut,
Le problème est que le C ne gère pas nativement les grand nombres. Tu peux utiliser la bibliothèque ssl pour utiliser le type bignum. Mais pour un petit problème comme tu as, cela n'est pas rentable.
Sinon, tu peux utiliser un langage qui gère les grands nombres nativement comme le python.
Et là, ça va tout seul ;-).
0