比赛场次 472
比赛名称 USACO金组复现(ION ONLINE模拟赛)
比赛状态 已结束比赛成绩
开始时间 2020-04-06 14:00:00
结束时间 2020-04-06 17:30:00
开放分组 全部用户
注释介绍 提高组模拟。
题目名称 Exercise (Gold)
输入输出 usaco_20Open_exercise.in/out
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分

Exercise (Gold)

★★   输入文件:usaco_20Open_exercise.in   输出文件:usaco_20Open_exercise.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

Farmer John(又)想到了一个新的奶牛晨练方案!

如同之前,Farmer John 的 $N$ 头奶牛($1\le N\le 10^4$)站成一排。对于 $1\le i\le N$ 的每一个 $i$,从左往右第 $i$ 头奶牛的编号为 $i$。他告诉她们重复以下步骤,直到奶牛们与她们开始时的顺序相同。

 • 给定长为 $N$ 的一个排列 $A$,奶牛们改变她们的顺序,使得在改变之前从左往右第 $i$ 头奶牛在改变之后为从左往右第 $A_i$ 头。

例如,如果 $A=(1,2,3,4,5)$,那么奶牛们总共进行一步。如果 $A=(2,3,1,5,4)$,那么奶牛们总共进行六步。每步之后奶牛们从左往右的顺序如下:

 • 0 步:$(1,2,3,4,5)$

 • 1 步:$(3,1,2,5,4)$

 • 2 步:$(2,3,1,4,5)$

 • 3 步:$(1,2,3,5,4)$

 • 4 步:$(3,1,2,4,5)$

 • 5 步:$(2,3,1,5,4)$

 • 6 步:$(1,2,3,4,5)$

求所有正整数 $K$ 的和,使得存在一个长为 $N$ 的排列,奶牛们需要进行恰好 $K$ 步。

由于这个数字可能非常大,输出答案模 $M$ 的余数($10^8\lt M\le 10^9+7$,$M$ 是质数)。

【输入格式】

输入的第一行包含 $N$ 和 $M$。

【输出格式】

输出一个整数。

【样例输入】

5 1000000007

【样例输出】

21

【样例解释】

存在排列使得奶牛需要进行 $1$、$2$、$3$、$4$、$5$ 以及 $6$ 步。因此,答案为 $1+2+3+4+5+6=21$。

【提示】

对于$ 50\% $的测试数据(测试点$ 1 \sim 5 $),满足$ N \le 100 $。

对于$ 100\% $的测试数据,均满足上文所给出的数据规模。

【来源】

USACO 美国公开赛 Gold 组