Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [TestFixture]
- public class P372v1
- {
- public long GetIntegerArea(long min, long max, long number)
- {
- long sum = 0;
- double sqrt = Math.Sqrt(number);
- for (long x = min; x <= max / sqrt; x++)
- {
- sum += max - (long)Math.Ceiling(x * sqrt) + 1;
- }
- return sum;
- }
- public long Calculate(long min, long max)
- {
- double maxN = (double)max * max / (min * min);
- long sum = 0;
- for (int i = 1; i <= maxN; i++)
- {
- sum += (i % 2 == 0 ? -1 : +1) * GetIntegerArea(min, max, i);
- }
- return sum;
- }
- [Test]
- public void Run5()
- {
- Assert.That(GetIntegerArea(1, 5, 1), Is.EqualTo(15));
- Assert.That(GetIntegerArea(1, 5, 2), Is.EqualTo(8));
- Assert.That(GetIntegerArea(1, 5, 4), Is.EqualTo(6));
- Assert.That(Calculate(1, 5), Is.EqualTo(9));
- }
- [Test]
- public void Run100()
- {
- Assert.That(Calculate(1, 100), Is.EqualTo(3019));
- }
- [Test]
- public void Run10K()
- {
- Assert.That(Calculate(101, 10000), Is.EqualTo(29750422));
- }
- [Test]
- public void GetResult()
- {
- Console.WriteLine(Calculate(2000001, 1000000000));
- }
- }
RAW Paste Data