From d83cf8f50ebfbc9a2e630c027556421321bb010c Mon Sep 17 00:00:00 2001 From: Xamora Date: Fri, 13 Dec 2024 08:06:27 +0100 Subject: [PATCH] finish part 2, just math issue --- 13/part2.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/13/part2.c b/13/part2.c index 60bf0e9..118a087 100644 --- a/13/part2.c +++ b/13/part2.c @@ -2,7 +2,20 @@ long long solve(long long A[], long long B[], long long prize[]) { - return 0; + if (((prize[0] * B[1]) - (B[0] * prize[1])) % ((A[0] * B[1]) - (B[0] * A[1])) != 0) + return 0; + + if (((A[0] * prize[1]) - (prize[0] * A[1])) % ((A[0] * B[1]) - (B[0] * A[1])) != 0) + return 0; + + long long x = ((prize[0] * B[1]) - (B[0] * prize[1])) / ((A[0] * B[1]) - (B[0] * A[1])); + long long y = ((A[0] * prize[1]) - (prize[0] * A[1])) / ((A[0] * B[1]) - (B[0] * A[1])); + + if (x <= 0 || y <= 0) + return 0; + + long long result = x * 3 + y; + return result; } @@ -23,9 +36,9 @@ int main(int argc, char **argv) { long long B[2] = {atoi(button_B[0]), atoi(button_B[1])}; char **prizes = str_split(strdup(inputs[i + 2]), ' '); - long long prize[2] = {atoi(prizes[0]), atoi(prizes[1])}; + long long prize[2] = {atoi(prizes[0]) + 10000000000000, atoi(prizes[1]) + 10000000000000}; - solve(A, B, prize); + token_spent += solve(A, B, prize); } printf("token_spent: %lld\n", token_spent);