diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2010-06-20 16:38:13 +0200 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:32:41 +0200 |
| commit | 744843059bb6a3f515b351416da9885dcad77960 (patch) | |
| tree | b68fcc72ac561486eb7cdd98e68c21261f91499a /src | |
| parent | 1e00032ef9706b7b85f157a404ad9cf5838df689 (diff) | |
project euler solution 33
Diffstat (limited to 'src')
| -rw-r--r-- | src/projecteuler/033.c | 59 | ||||
| -rw-r--r-- | src/projecteuler/033.py | 34 |
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) + |
