#12250. 魔法塔的质数排列

魔法塔的质数排列

魔法塔的质数排列

🌟故事背景

在魔法王国里,有一座神秘的“等差魔法塔”。 塔的第 1 层写着数字 a1,从第 2 层开始,每一层的数字比上一层多一个固定公差 d, 于是塔的第 n 层数字是一个 等差数列的第 n 项:

an=a1+(n1)×da_n = a_1 + (n - 1) \times d现在,魔法师想从中挑出所有 质数作为特殊的魔法球。 假设最后挑出的质数总共有 k 个, 他想要把这 k 个质数 ​ 依次放入 k 个不同的位置​,问一共有多少种不同的放法?


📥 输入格式

n a1 d
  • n:塔的层数(生成 n 项等差数列)
  • a1:等差数列的首项
  • d:等差数列的公差

📤 输出格式

第1行:k (质数的个数)
第2行:P(k, k) 的值 (排列数)

📋 输入样例

10 2 1
  • 解释

*等差数列前 10 项:2, 3, 4, 5, 6, 7, 8, 9, 10, 11

  • 其中质数是:2, 3, 5, 7, 11 → 共 5 个
  • 排列数:P(5,5)=5!=120P(5, 5) = 5!= 120
  • 输出样例
5
120

思路与提示

    • 生成等差数列

ai=a1+(i1)timesd2a_i = a_1 + (i - 1)times d2. 筛选质数 对每个 aia_i 判断是否是质数。 2. 计数 质数个数 k。 2. 计算排列数

P(k,k)=k!=1×2×3××kP(k, k) = k!= 1\times 2 \times 3 \times \dots \times k


📌 数据范围建议

  • 1n1051 \leq n \leq 10 ^ 5 (注意质数判断要优化,或用筛法)
  • a1,d106a_1, d \leq 10 ^ 6