题目描述
沫沫很喜欢找规律填数字,譬如 1,4,7,( ),⋯,相邻的数相差为 3,括号中的数应为 10;又如 3,6,12,( ),⋯,每个数是前一个数的两倍,括号中的数应为 24。
由于常年玩这种游戏,沫沫厌倦了等差数列与等比数列。当看到数列 1,2,⋯,n 时,她想尽量小的改变其顺序使得不存在公差为 A 或者公比为 B 的子列。
具体地,给定整数 n,A,B,求一个 1 到 n 的排列 P=(P1,P2,⋯,Pn),满足 ∀i,j∈{1,2,⋯,n},若 i<j 且 Pi<Pj,则 Pj=Pi+A 且 Pj=Pi×B。排列 P 保留原有顺序的程度 S 定义为:
S=1≤i<j≤n,Pi<Pj∑(Pj−Pi)
请你在满足前述要求的前提下,使得 S 的值尽量大。
输入格式
第一行包含三个正整数 n,A,B,意义如前所述。相邻的数之间用一个空格隔开。
输出格式
第一行包含 n 个整数,为你求得的排列 P,相邻的数之间用空格隔开。
4 3 2
4 2 1 3
数据范围与提示
评分方式
每个测试点单独评分。
对于每一个测试点,如果你的输出不合法,如文件格式错误、输出的解不符合要求等,该测试点得 0 分。
否则设你输出的排列对应 S 值为 a,我们提供的排列对应 S 值为 b,你在该测试点的得分如下:
- 如果 a≥b,得 10 分;
- 否则得分为:
$$\max \{ \lfloor 10\times (\exp (\frac{a}{b})-2)\rfloor,1\}
$$
数据规模
总共 10 个测试点,数据范围满足:
测试点编号 |
n |
A |
B |
1 |
≤30 |
≤n |
2 |
≤60 |
AmodB=0 |
≥4 |
3 |
≤70 |
≥5 |
4 |
≤80 |
≥6 |
5 |
≤90 |
≥7 |
6 |
≤n |
=1 |
7,8 |
≤5 |
≤n |
9 |
=60 |
=21 |
=3 |
10 |
=90 |
=18 |
=2 |
在所有输入数据中,A 与 B 均为不超过 n 的正整数。