aboutsummaryrefslogtreecommitdiff
path: root/python/033-digit_cancelling_fractions.py
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2021-01-15 12:34:37 +0100
committerCharles Cabergs <me@cacharle.xyz>2021-01-15 12:34:37 +0100
commit599e9db538390cf83d8e1967f9da7795b20e3e48 (patch)
tree861a80212f49c2c7992eb047ec986c6349902cc2 /python/033-digit_cancelling_fractions.py
parent74ac4927d7caad179c398b7bb8a54c71e783ef2e (diff)
downloadproject_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.tar.gz
project_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.tar.bz2
project_euler-599e9db538390cf83d8e1967f9da7795b20e3e48.zip
Added problem 33 in python
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")