From 2206597e3d64f9c9299f292951331022e8705813 Mon Sep 17 00:00:00 2001 From: Jonathan Chan Date: Tue, 6 Dec 2016 20:10:15 -0800 Subject: [PATCH] Problem 43 --- 43 | Bin 0 -> 8632 bytes 43.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100755 43 create mode 100644 43.c diff --git a/43 b/43 new file mode 100755 index 0000000000000000000000000000000000000000..81cb27f86720a21994862a9976c9a8690b35322a GIT binary patch literal 8632 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 VKh10SeO8J;DlV|TZgFmn|6j^i>0bZ< literal 0 HcmV?d00001 diff --git a/43.c b/43.c new file mode 100644 index 0000000..8893ff9 --- /dev/null +++ b/43.c @@ -0,0 +1,84 @@ +#include +#include +#include + +bool isPrimeDivisible (int* digits) { + // d2d3d4 divisible by 2 + bool value = digits[3] == 0 || + digits[3] == 2 || + digits[3] == 4 || + digits[3] == 6 || + digits[3] == 8; + + // d3d4d5 divisible by 3 + value = value && (digits[2] + digits[3] + digits[4]) % 3 == 0; + + // d4d5d6 divisible by 5 + value = value && (digits[5] == 0 || digits[5] == 5); + + // d5d6d7 divisible by 7 + value = value && (digits[6] + digits[5]*3 + digits[4]*2) % 7 == 0; + + // d6d7d8 divisible 11 + int divSum = digits[5] - digits[6] + digits[7]; + value = value && (divSum == 0 || divSum == 11); + + // d7d8d9 divisible by 13 + divSum = digits[6]*10 + digits[7] - digits[8]*9; + value = value && divSum % 13 == 0; + + // d8d9d10 divisible by 17 + divSum = digits[7]*10 + digits[8] - digits[9]*5; + value = value && divSum % 17 == 0; + + return value; +} + +long long intArrayToInt (int* array) { + return array[0] * 1000000000LL + + array[1] * 100000000LL + + array[2] * 10000000LL + + array[3] * 1000000LL + + array[4] * 100000LL + + array[5] * 10000LL + + array[6] * 1000LL + + array[7] * 100LL + + array[8] * 10LL + + array[9] * 1LL; +} + +int main () { + long long sum = 0; + int num[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + int k = 8; + while (k >= 0) { + if (num[k] < num[k+1]) { + for (int l = 9; l > k; l--) { + if (num[k] < num[l]) { + int temp = num[l]; + num[l] = num[k]; + num[k] = temp; + + int* rev = malloc (sizeof (int) * (9 - k)); + for (int r = k + 1; r < 10; r++) { + rev[r - k - 1] = num[r]; + } + for (int r = k + 1; r < 10; r++) { + num[r] = rev[9-r]; + } + free (rev); + + if (isPrimeDivisible (num)) + sum += intArrayToInt (num); + + k = 8; + break; + } + } + } + else { + k--; + } + } + printf ("%lli\n", sum); +}