排列数
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
排列数
输入文件:num.in
输出文件:num.out
题目背景
琪露诺今天学习了神秘的排列数。
题目描述
排列数的符号为 A,意为从 n 个物品中任选 m 个,并且按照任意顺序排成一列的方案数。和组合数不同,排列数与选出物品的顺序有关。
以琪露诺的智商当然学不明白排列数的含义,所以她只把公式背了下来:A(n,m) = n! / (n-m)!。
幸运的是,期末考试压轴大题刚好考了排列数。题目是这样的:求有多少对 (i, j),满足 i ≤ j,且 A(j,i) = j! / (j-i)! 是 k 的倍数。
可惜只背公式当然是没什么用的,琪露诺完全不会这个题目,你能帮帮她吗?
输入格式
输入仅一行,包含两个整数 n, k,表示排列数的大小限制与倍数限制。
输出格式
输出仅一个整数,表示满足 1 ≤ i ≤ j ≤ n 且 A(j,i) 为 k 的倍数的有序数对 (i, j) 的数量。
输入输出样例
样例 1
输入:
10 1
输出:
55
样例 2
输入:
10 6
输出:
43
样例 3
输入:
100 66
输出:
4540
样例解释
样例 1 中,满足 1 ≤ i ≤ j ≤ 10 的任意 A(j,i) 都是 1 的倍数,共 55 个。
样例 2 中,总共有 55 对满足范围条件,其中不符合倍数条件的有 12 个,符合条件的有 55 - 12 = 43 个。
数据范围
| 子任务 | 分数 | n | k | 特殊性质 |
|---|---|---|---|---|
| 1 | 30 | ≤ 10 | ≤ 100 | 无 |
| 2 | 10 | ≤ 300 | ≤ 10³ | |
| 3 | ≤ 3000 | |||
| 4 | ≤ 10⁵ | ≤ 2 | ||
| 5 | ≤ 100 | |||
| 6 | ≤ 10⁶ | ≤ 10⁹ | 保证 k 为质数 | |
| 7 | 20 | 无 |
对于所有数据:1 ≤ n ≤ 10⁶,1 ≤ k ≤ 10⁹。