繁体   English   中英

项目欧拉演习30

[英]Project Euler Exercise 30

我正在努力解决项目欧拉的第30个问题。

我对这个问题的实施产生了4次幂的良好结果,但是5号电源的答案不被网站接受。

有人能解释我的代码中有什么问题吗?

另外,我不确定我的检查上限的公式是否正常。 如果不是,我很高兴知道好的解决方案。

这是我的代码:

class P30
{
    static void Main(string[] args)
    {

        Console.WriteLine("   " + GetMatchingNumbers(4).Sum());

        Console.WriteLine("   " + GetMatchingNumbers(5).Sum());
        Console.ReadLine();
    }

    static IEnumerable<int> GetMatchingNumbers(int power)
    {
        for (int i = 2; i <(power + 1)*(Math.Pow(9,power)); i++)
        {
            var sumOfPowers = 0;
            var tempi = i;
            for (int x = 0; x < power; x++)
            {
                sumOfPowers += (int)Math.Pow( tempi % 10, power);
                tempi /= 10;
            }
            if (sumOfPowers == i)
            {
                yield return i;
                Console.WriteLine("With Power {0}, {1} matches", power, i);
            }
        }
    }
}

[编辑]问过我的理论是否准确。

您的代码仅汇总了它正在检查的数字的前5位数。

代替

for (int x = 0; x < power; x++)

你应该使用while循环

while (tempi > 0)

这会产生您需要的缺失数字。 (暗示它长6位数。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM