コード例 #1
0
ファイル: PE020.cs プロジェクト: jnsnkrllive/project-euler
        void PESolution.solve()
        {
            int[] digits = new int[159];
            digits[0] = 1;
            int targetNumber = 100;

            for (int i = 1; i <= targetNumber; i++)
            {
                int[] carryover = new int[digits.Length + 2];
                for (int j = 0; j < digits.Length; j++)
                {
                    int newNumber = i * digits[j];
                    carryover[j + 1] += PELibrary.getTens(newNumber) + PELibrary.getTens(PELibrary.getOnes(newNumber) + carryover[j]);
                    carryover[j + 2] += PELibrary.getHundreds(newNumber);
                    digits[j]         = PELibrary.getOnes(PELibrary.getOnes(newNumber) + carryover[j]);
                }
            }
            int sum = 0;

            for (int i = 0; i < digits.Length; i++)
            {
                sum += digits[i];
            }

            Console.WriteLine("Answer is {0}", sum);
        }
コード例 #2
0
ファイル: PE017.cs プロジェクト: jnsnkrllive/project-euler
        private static int numberOfLetters(int n)
        {
            int ones      = PELibrary.getOnes(n);
            int tens      = PELibrary.getTens(n);
            int hundreds  = PELibrary.getHundreds(n);
            int thousands = PELibrary.getThousands(n);
            int count     = 0;

            // Add for x1-99
            if (tens == 0)
            {
                if (ones != 0)
                {
                    count += cardinalLength[ones];
                }
            }
            else if (tens == 1)
            {
                count += cardinalLength[tens * 10 + ones];
            }
            else
            {
                count += cardinalLength[10 * tens];
                if (ones > 0)
                {
                    count += cardinalLength[ones];
                }
            }
            // Add for x100-999
            if (hundreds != 0)
            {
                count += cardinalLength[hundreds] + cardinalLength[100];
                if (ones == 0 && tens == 0)
                {
                    count -= "and".Length;
                }
            }
            // Add for x1000+
            if (thousands != 0)
            {
                count += cardinalLength[thousands] + cardinalLength[1000];
            }
            return(count);
        }