summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2010-06-20 16:38:13 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:32:41 +0200
commit744843059bb6a3f515b351416da9885dcad77960 (patch)
treeb68fcc72ac561486eb7cdd98e68c21261f91499a
parent1e00032ef9706b7b85f157a404ad9cf5838df689 (diff)
project euler solution 33
-rw-r--r--src/projecteuler/033.c59
-rw-r--r--src/projecteuler/033.py34
2 files changed, 93 insertions, 0 deletions
diff --git a/src/projecteuler/033.c b/src/projecteuler/033.c
new file mode 100644
index 0000000..61a7ffd
--- /dev/null
+++ b/src/projecteuler/033.c
@@ -0,0 +1,59 @@
+
+int curious_fraction(int a, int b)
+{
+ int a1 = a/10;
+ int a2 = a%10;
+ int b1 = b/10;
+ int b2 = b%10;
+
+ float result = 1.0*a/b;
+
+ if(a2 == 0)
+ return 0;
+
+ if(a1 == b1)
+ {
+ float result2 = 1.0*a2/b2;
+ if(result == result2)
+ return 1;
+ }
+
+ if(a1 == b2)
+ {
+ float result2 = 1.0*a2/b1;
+ if(result == result2)
+ return 1;
+ }
+
+ if(a2 == b1)
+ {
+ float result2 = 1.0*a1/b2;
+ if(result == result2)
+ return 1;
+ }
+
+ if(a2 == b2)
+ {
+ float result2 = 1.0*a1/b1;
+ if(result == result2)
+ return 1;
+ }
+
+ return 0;
+}
+
+int main()
+{
+ int a, b;
+ float product = 1.0;
+
+ for(a=10; a<100; a++)
+ for(b=a+1; b<100; b++)
+ if(curious_fraction(a, b))
+ product *= 1.0*a/b;
+
+ printf("%d\n", (int)(1/product));
+
+ return 0;
+}
+
diff --git a/src/projecteuler/033.py b/src/projecteuler/033.py
new file mode 100644
index 0000000..9575983
--- /dev/null
+++ b/src/projecteuler/033.py
@@ -0,0 +1,34 @@
+def curious_fraction(a, b):
+ a1 = a/10
+ a2 = a%10
+ b1 = b/10
+ b2 = b%10
+
+ result = 1.0*a/b;
+
+ if a2 == 0 or b2 == 0:
+ return False
+
+ if a1 == b1 and 1.0*a2/b2 == result:
+ return True
+
+ if a1 == b2 and 1.0*a2/b1 == result:
+ return True
+
+ if a2 == b1 and 1.0*a1/b2 == result:
+ return True
+
+ if a2 == b2 and 1.0*a1/b1 == result:
+ return True
+
+ return False
+
+product = 1.0
+
+for a in range(10, 100):
+ for b in range(a+1, 100):
+ if curious_fraction(a, b):
+ product *= 1.0*a/b
+
+print int(1/product)
+