public class Euler26 { public static int biggestCycle(int d) { int[] rems = new int[1000]; int r = 1; int i = 0; while (r != 0) { r = (r * 10) % d; for (int j = 0; j < i; ++j) { if (rems[j] == r) { return i; } } rems[i++] = r; } return i; } public static int Main(string[] args) { int ans = 0; for (int d = 1; d < 1000; ++d) { ans = ans < biggestCycle(d) ? d : ans; } System.Console.WriteLine(ans); return 0; } }
Sunday, October 27, 2013
Problem 26 - resolved in C#
I started trying to solve the problem that I am up to, problem 57, in C#, as I realized it was a pretty nice language that I had yet to use. However, I soon discovered that I had chosen the wrong language. After struggling with trying to write a rational class and then even contemplating writing my own BigInteger class, I realized that I knew that there was a better way to solve problem 57, and that was with Racket. More on that in the next post, this post just has my fairly unexciting C# code, which is actually (I think, very subjectively) cleaner than the Racket I originally wrote to solve problem 26 (which involves finding the denominator d < 1000 such that 1 / d has the largest cycle).
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment