Friday 10 April 2009

PROJECT EULER #17

Link to page

If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there are 3 + 3 + 5 + 4 + 4 = 19 letters used in total.

If all the numbers from 1 to 1000 (one thousand) inclusive were written out in words, how many letters would be used?


NOTE: Do not count spaces or hyphens. For example, 342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters. The use of "and" when writing out numbers is in compliance with British usage.


using System;

namespace project_euler
{
class Program
{
static void Main()
{
//Problem 17
DateTime start = DateTime.Now;
int sum = 0;
for (int j = 1; j <= 1000; j++)
{
int ones,temp;
int hundreds = Math.DivRem(j, 100, out temp);
int tens = Math.DivRem(temp, 10, out ones);
switch (hundreds)
{
case 10://one thousand
sum += 11;
break;
case 6://six
case 2://two
case 1://one
sum += 3;
break;
case 9://nine
case 5://five
case 4://four
sum += 4;
break;
case 8://eight
case 7://seven
case 3://three
sum += 5;
break;
}
if (j>99&& j<1000)
{
switch (tens + ones == 0 )
{
case true://hundred
sum += 7;
break;
case false://hundred and
sum += 10;
break;
}
}
switch (tens)
{
case 9://ninety
case 8://eighty
case 3://thirty
case 2://twenty
sum += 6;
break;
case 4://forty
case 6://sixty
case 5://fifty
sum += 5;
break;
case 7://seventy
sum += 7;
break;
case 1:
switch (ones)
{
case 0://ten
sum += 3;
break;
case 2://twelve
case 1://eleven
sum += 6;
break;
case 9://nineteen
case 8://eighteen
case 4://fourteen
case 3://thirteen
sum += 8;
break;
case 6://sixteen
case 5://fifteen
sum += 7;
break;
case 7://seventeen
sum += 9;
break;
}
break;
}
if (tens != 1)
{
switch (ones)
{
case 6: //six
case 2: //two
case 1: //one
sum += 3;
break;
case 9: //nine
case 5: //five
case 4: //four
sum += 4;
break;
case 8: //eight
case 7: //seven
case 3: //three
sum += 5;
break;
}
}
}
Console.WriteLine(sum);
TimeSpan time = DateTime.Now - start;
Console.WriteLine("This took {0}", time);
Console.ReadKey();
}
}
}

No comments: