From 6c26f6f8f4b9e439b5c3467baa5f92cb90a786e1 Mon Sep 17 00:00:00 2001 From: pikatech Date: Mon, 22 May 2017 21:19:59 +0200 Subject: [PATCH] Another solution using Bignum support. --- 16/euler16.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 16/euler16.cpp diff --git a/16/euler16.cpp b/16/euler16.cpp new file mode 100644 index 0000000..6860db0 --- /dev/null +++ b/16/euler16.cpp @@ -0,0 +1,26 @@ +// This solution needs the GNU MP Bignum library +// g++ euler16.cpp -o euler16 -lgmpxx -lgmp + +#include +#include +#include +#include + +int main(void) { + mpz_class power = 1; + mpz_class modulo = 0; + mpz_class tens = 10; + mpz_class digitsum = 0; + + for (int i = 1; i <= 1000; ++i) { + power *= 2; + } + + while (power != 0) { + digitsum = digitsum + power % tens; + power = power / 10; + } + + std::cout << digitsum << std::endl; + return EXIT_SUCCESS; +}