Probleme de calcul en C
Nirv
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Probleme de calcul en C
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Logiciel gratuit calcul surface m2 - Télécharger - Outils professionnels
1 réponse
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 ;-).
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 ;-).