203 Squarefree Binomial Coefficients
二项式系数 可以写成如下帕斯卡三角的形式
前八排有 12 个不同的数:1, 2, 3, 4, 5, 6, 7, 10, 15, 20, 21 和 35。
Squarefree 的意思是不能被任何质数的平方整除。前八排的数字里面,4 和 20 不是 Squarefree 的,因为它们能被质数 2 的平方整除。
求帕斯卡三角前 51 排不重复的 Squarefree 的数之和。
我们先来估计下最大的数是多少,然后考虑用什么类型表示,第五十一行其实是 ,那么最大的是数
long
就足够了。
首先我们计算前 51 排的数。
var rows = new List<long[]>();
for (int i = 0; i < 51; i++)
{
long[] row = new long[i + 1];
for (int j = 0; j < row.Length; j++)
{
if (j == 0 || j == row.Length - 1)
{
row[j] = 1;
}
else
{
var lastRow = rows[i - 1];
row[j] = lastRow[j - 1] + lastRow[j];
}
}
rows.Add(row);
}
那么为什么需要考虑 49 呢?很简单,49 包含了两个 7,那么 取 49 和 50 的时候,有可能分子因数 7 的个数能够比分母多两个。那么该数就能被 49 整除,进而不是 Squarefree 的。
最后,排除 Squarefree 的数字再求和即可。