#iai15b1. 验证公式(Verify Formula)

验证公式(Verify Formula)

验证公式(Verify Formula)

题目背景

我们知道

1²+2²+3²+⋯+n² = (2n³+3n²+n)/6

还有

1³+2³+3³+⋯+n³ = (n⁴+2n³+n²)/4

这些公式的结果都是一个多项式除以一个正整数,而这些公式对任何自然数都是成立的,说明这些多项式有特殊的性质。我们可以通过检查多项式是否永远是一个正整数的倍数来判断它是否有成为一个组合数学结论的资格。

题目描述

给定一个多项式(不含常数项)

f(x) = aₙxⁿ + aₙ₋₁xⁿ⁻¹ + ⋯ + a₂x² + a₁x¹

以及 m,请判断对任何自然数 n,f(n) 是否永远可以被 m 整除。

输入格式

第一行:两个正整数 n 与 m; 第二行:n 个整数表示 a₁,a₂,⋯,aₙ。

输出格式

  • 如果输入的多项式永远是 m 的倍数,输出 Yes
  • 否则,输出 No

数据范围

  • 对于 50% 的数据,1 ≤ n ≤ 9,1 ≤ m ≤ 100,-9 ≤ aᵢ ≤ 9;
  • 对于 100% 的数据,1 ≤ n ≤ 1000,1 ≤ m ≤ 1000,-1,000,000 ≤ aᵢ ≤ 1,000,000。

样例输入 #1

3 6 1 3 2

样例输出 #1

Yes

说明:这就是平方和公式,注意系数是按照从小到大顺序给出的。

样例输入 #2

1 3 2

样例输出 #2

No

说明:多项式 2x 显然不可能永远是 3 的倍数。

知识点与难度

本题涉及的知识点从属于 GESP 5级,难度等级:⭐⭐⭐


测试点分布

Subtask 分值 测试点编号 说明
0 10 1~2 样例
1 20 3~8 小规模 n≤5 / 特殊: 单系数 / 特殊: 全零
2 15 9~11 Hack: m=1 / Hack: 大系数 / Hack: 负系数
3 30 12~20 中规模 n≈100~500 / 大规模 n≈1000 压力
4 25 21~25 随机 n=1~1000 回归