C#でプロジェクトオイラーを解く(問題6「二乗和の差」)

プロジェクトオイラー
Pocket

どーも、みつおです。

学校の先生が二乗(にじょう)のことをじじょうって読んでて、滑舌が悪いだけだと思ってたけど、じじょうとも読めるらしいね。

問題

最初の10個の自然数について, その二乗の和は,

12 + 22 + … + 102 = 385

最初の10個の自然数について, その和の二乗は,

(1 + 2 + … + 10)2 = 3025

これらの数の差は 3025 – 385 = 2640 となる.

同様にして, 最初の100個の自然数について二乗の和と和の二乗の差を求めよ.

出典:Problem6

解答

using System;
using System.Collections.Generic;
using System.Linq;

namespace Problem6
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Solve());
            Console.ReadLine();
        }

        private static int Solve()
        {
            int ret = 0;
            int no = 100;
            List<int> data = new List<int>();
            List<int> powlist = new List<int>();

            for (int i = 1; i <= no; i++)
            {
                //二乗のリスト
                powlist.Add((int)Math.Pow(i, 2));
                data.Add(i);
            }

            //二乗の和
            int powsum = powlist.Sum();

            //和の二乗
            int sum = data.Sum();
            int sumpow = (int)Math.Pow(sum, 2);

            ret = sumpow - powsum;

            return ret;
        }
    }
}

 

出力

25164150

コメント

タイトルとURLをコピーしました