using System;
using System.Collections.Generic;
using System.Text;
namespace projecteuler017
{
class Program
{
/// <summary>
/// 1~19
/// </summary>
static int[] d1_19 = new int[] { 0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8 };
/// <summary>
/// 20,30,40……90
/// </summary>
static int[] d20_90 = new int[] { 0, 0, 6, 6, 5, 5, 5, 7, 6, 6 };
static void Main(string[] args)
{
F1();
}
private static void F1()
{
Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
DateTime timeStart = DateTime.Now;
int sum = 0;
for (int i = 1; i <=1000; i++)
{
sum += getLetterCount(i);
}
Console.WriteLine(sum);
Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "
");
}
private static int getLetterCount(int n)
{
if (n < 20)
{
return d1_19[n];
}
if (n % 10 == 0 && n <= 90)
{
return d20_90[n / 10];
}
if (n <= 99)
{
return d20_90[n / 10] + d1_19[n % 10];
}
if (n == 1000)
{
return 11; //one thousand
}
if (n % 100 == 0)
{
return d1_19[n / 100] + 7;
}
return getLetterCount(n / 100 * 100) + 3 + getLetterCount(n % 100);
}
}
}
/*
Void F1()
21124
Total Milliseconds is 11.5015
By GodMoon
*/