2016-10-19 2 views
0

"unsigned long int" ne cesse de devenir 0. Il doit s'agir d'un très grand nombre entier que je peux exploiter multiplication et modulo on. Exemple: 1234^123% 1234Comment allouer un entier avec des centaines de chiffres en C++?

+3

Vous avez besoin d'une grande bibliothèque entière comme l'a dit Jonny Henly. Néanmoins, 1234^123% 1234 acutally est 0. – chrizke

+0

^est une opération xor en C++, pas exponentiation, – doug

+0

Et regarder la précédence: '1234^123% 1234' signifie ce' 1234^(123% 1234) ' – doug

Répondre

-2

Deux routes vous ont
1. Mettre en oeuvre ce que vous avez besoin en apprenant comment faire des calculs à l'aide de grands tableaux d'entiers avec des trucs mathématiques pour accélérer ou
2. Utilisez une bibliothèque

Je suggère d'aller avec la 2ème option si vous n'êtes pas lié à utiliser la bibliothèque externe. Une telle bibliothèque bigNum est ttmath

OU Si vous avez une option pour passer à Java, java a intégré BigInteger, BigDecimal et plus de fonctionnalités supportées. Regardez BigInteger javadoc

+0

Cette réponse pourrait être améliorée avec quelques exemples. – mjs

0

Si vous utilisez gcc, vous pouvez essayer __uint128_t ou peut-être utiliser double au lieu sauf si vous devez effectuer des opérations au niveau du bit