回 帖 发 新 帖 刷新版面

主题:[讨论][转贴]Pascal问题,高手来作作

火星人用一种简单的方式来表示数字——掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3...... 火星人的任意两根手指都能随意交换位置。
        如人的五根手指——拇指,食指,中指,无名指,小指分别编号为1,2,3,4,5,当它们按正常顺序排列时,形成了一个五位数12345,当你交换无名指和小指时,会形成5位数12354,在所有能够形成的120个5位数中,12345最小,它为1;12354第二小,它为2;54321最大,它表示120。

有三个手指情况如下:
                   123    132    213    231    312    321
代表的数字    1        2        3        4        5        6

        你的任务是看出火星人他手指代表的数,并把它和科学家告诉你的一个很小的数相加,并根据相加结果改变火星人手指的排列顺序。输入的数据保证这个相加的结果不会超出火星人手指能表示的数范围。

要求:
从文件输入,文件第一行有一个正数N,表示火星人手指的个数(1<=N<=10000)
第二行是一个正整数M,表示加上的一个很小的数(1<=M<=100)
下一行是1到N这N个整数的一个排列,用空格隔开,表示火星人的手指排列顺序。

[样例输入]
5
3
1 2 3 4 5
[样例输出]
1 2 4 5 3

回复列表 (共2个回复)

沙发

这不是今年全国联赛普及组最后一题吗?

板凳

怪不得那么熟
是不是用递归来做?

我来回复

您尚未登录,请登录后再回复。点此登录或注册