diff options
author | mjfernez <mjfernez@gmail.com> | 2020-02-09 15:43:30 -0500 |
---|---|---|
committer | mjfernez <mjfernez@gmail.com> | 2020-02-09 15:43:30 -0500 |
commit | c9a6a1b8a3ec380adaf74f0ce8d650e97e38f474 (patch) | |
tree | b1baaa8a1ffd000624a4a349f177a55b4a3ccbbb /16-Power-Digit-Sum/sumexp.c | |
parent | 4009c876bb8f942e1a52429061b46cc34bf7bf16 (diff) | |
download | Project_Euler_Solutions-c9a6a1b8a3ec380adaf74f0ce8d650e97e38f474.tar.gz |
added Power Digit Sum solution in C
Diffstat (limited to '16-Power-Digit-Sum/sumexp.c')
-rw-r--r-- | 16-Power-Digit-Sum/sumexp.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/16-Power-Digit-Sum/sumexp.c b/16-Power-Digit-Sum/sumexp.c new file mode 100644 index 0000000..7d471ab --- /dev/null +++ b/16-Power-Digit-Sum/sumexp.c @@ -0,0 +1,24 @@ +#include <stdio.h> +#include <stdlib.h> +#include <gmp.h> + +// Compile Notes: use `gcc <program>.c -lgmp` + + +int main(){ + mpz_t num, remainder; + unsigned long sum = 0; + mpz_init(num); + mpz_init(remainder); + // From docs, this assigns the value num to the value 2^1000 + mpz_ui_pow_ui(num, 2, 1000); + + // mpz_sgn returns 1 if positive, 0 if 0, -1 if negative + while(mpz_sgn(num)){ + sum += mpz_mod_ui(remainder, num, 10); + mpz_fdiv_q_ui(num, num, 10); + } + printf("%lu\n", sum); + return 0; +} + |