using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace projecteuler014
{
class Program
{
static int[] data = new int[1000001];
static void Main(string[] args)
{
F1();
}
private static void F1()
{
Console.WriteLine(new System.Diagnostics.StackTrace().GetFrame(0).GetMethod());
DateTime timeStart = DateTime.Now;
int maxLength = int.MinValue;
int number = int.MinValue;
for (int i = 1; i <= 1000000; i++)
{
data[i] = getChain(i);
if (maxLength < data[i])
{
maxLength = data[i];
number = i;
}
}
Console.WriteLine("The longest chain contains " + maxLength + " items.\nThe number is " + number);
Console.WriteLine("Total Milliseconds is " + DateTime.Now.Subtract(timeStart).TotalMilliseconds + "\n\n");
}
/// <summary>
/// 获取链中所有元素相乘的结果
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
private static int getChain(long n)
{
int count = 1;
while (n != 1)
{
if (n % 2 == 0)
{
n = n >> 1;
}
else
{
n = 3 * n + 1;
}
if (n < 1000000 && data[n] != 0)
{
return count + data[n];
}
count++;
}
return count;
}
}
}
/*
Void F1()
The longest chain contains 525 items.
The number is 837799
Total Milliseconds is 346.544
By GodMoon
*/
【ProjectEuler】ProjectEuler_014
最新推荐文章于 2019-02-18 17:36:00 发布