aboutsummaryrefslogtreecommitdiff
path: root/python/033-digit_cancelling_fractions.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/033-digit_cancelling_fractions.py')
-rw-r--r--python/033-digit_cancelling_fractions.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/python/033-digit_cancelling_fractions.py b/python/033-digit_cancelling_fractions.py
new file mode 100644
index 0000000..7154fa5
--- /dev/null
+++ b/python/033-digit_cancelling_fractions.py
@@ -0,0 +1,44 @@
+###
+# Digit cancelling fractions
+# Problem 33
+#
+# The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplify
+# it may incorrectly believe that 49/98 = 4/8, which is correct, is obtained by cancelling the 9s.
+#
+# We shall consider fractions like, 30/50 = 3/5, to be trivial examples.
+#
+# There are exactly four non-trivial examples of this type of fraction, less than one in value,
+# and containing two digits in the numerator and denominator.
+#
+# If the product of these four fractions is given in its lowest common terms, find the value of the denominator.
+###
+
+solution_n = 1
+solution_d = 1
+
+for n in range(10, 100):
+ for d in range(10, 100):
+ if n / d >= 1.0:
+ continue
+ if n % 10 == 0 or d % 10 == 0:
+ continue
+ sn = str(n)
+ sd = str(d)
+ if sn[0] in sd:
+ sd = sd.strip(sn[0])
+ sn = sn[1]
+ elif sn[1] in sd:
+ sd = sd.strip(sn[1])
+ sn = sn[0]
+ else:
+ continue
+ if len(sn) == 0 or len(sd) == 0 or float(sd) == 0:
+ continue
+ if int(sn)/ int(sd) == n / d:
+ print(n, "/", d)
+ solution_n *= n
+ solution_d *= d
+
+
+print(solution_n, "/", solution_d)
+print("= 1 / 100")