Project Euler 06 C# Solution

这道问题相对简单,我们之前已经注意到,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
    {

    }


}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值