125 Palindromic Sums
回文数 595 能够被写成连续几个数字的平方的和:
连续数字必须是正数,所以 被排除在外。
题目告诉我们小于 1000 的数字中,有 11 个满足题目所述条件,其之和是 4164,这可以用来检测我们的程序是否正确。
求小于 的数中,所以能够写成连续数字平方和的回文数之和。
欧拉项目里面这种题目的套路就是正向构造符合题意的数字。因为想要判定一个数能否写成连续数字之后比较困难,但是构造一个连续数字平方和的数就容易多了。
我们先计算出一系列的平方数,多少个呢?由于连续数字之和,那么最少也要两个数字,所以我们构造的最大平方数是 MAX
的一半就足够了。
int MAX = 100000000;
var squars = Enumerable.Range(1, (int)Math.Sqrt(MAX / 2)).Select(i => i * i).ToArray();
for
循环来构造连续数字之和。
这里面有一小撮重复的数字,去重,然后判断是否是回文数字,求和。