这道问题相对简单,我们之前已经注意到,C# 处理 数组和列表相当乏力,但是好在我们有 LINQ 作为武器,LINQ 可以很好的处理各种与数组有关的问题。
比如 在 Phython 里 简单的 list = [1:10], 在 C# 中,要写成 var list = Enumberable.Range(1,10).ToList().
另外需要注意到的是一个有意思的现象,X 的平方是 X个奇数的求和。
证明: 我们有一个4x4=16 的方阵,
XXXX
XXXX
XXXX
XXXX
可以拆分成由互相嵌套的 L 型构成,
DCBA
DCBB
DCCC
DDDD
我们观察到,我们有 1个A,3个B,5 个C, 7个D ,1,3,5,7 四个奇数组成了 16 这个4的平方数。
using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectEuler01
{
class Program
{
static void Main(string[] args)
{
Stopwatch watch = new Stopwatch();
watch.Start();
// Write your code here!
var mylist = Enumerable.Range(1,100).ToList();
double result = 0;
foreach (var i in mylist)
{
foreach (var j in mylist)
{
if (i!=j)
{
result += i * j;
}
}
}
Console.WriteLine(result);
watch.Stop();
double ts = watch.Elapsed.TotalMilliseconds;
Console.WriteLine("Totoal running time is " + ts + " ms ");
Console.ReadLine();
}
}
class MyClass
{
}
}