欢迎加入西电微软俱乐部招新群 588166170,做出福利题,免技术部第一次面试且赠送“福利”海报或小礼品~~~~

问题 1018. -- Josephus环的复仇的复仇

1018: Josephus环的复仇的复仇

时间限制: 1 Sec  内存限制: 128 MB
提交: 38  解决: 9
[提交][状态][讨论版]

题目描述

数据结构老师听说xry111把一道上机题(1008)搞得那么疯狂(1009),非常生气,扔给他一道新题:

任给正整数n、k(1<=n<=109,1<=k<=min(n,10000)),按下述方法可得排列1,2,……,n的一个置换:将数字1,2,.. .,n环形排列,按顺时针方向从1开始计数;计满K时输出该为之上的数字(并从环中删去该数字),然后从下一个数字开始继续计数,直到环中所有数字均被输出为止。

由于n太大,不可能输出整个置换,只要输出置换中的t个数就行了。

数据结构老师威胁xry111:“你要是连这题也不会做,期末给你打59.99分。”快帮帮可怜的xry111吧。

输入

输入包含多组数据。

每组数据,第一行包含3个整数n、k、t。
第二行,包含t个用空格分割的整数q1,q2,...,qt

对于100%的数据,有1<=n<=109,1<=k<=min(n, 10000),1<=t<=20,1<=qi<=n。
数据组数不超过100组。

输出

对于每组数据,输出1行,包含t个用空格分割(行末不要有多余空格)的整数p1,p2,...,pt,pi表示生成的置换中的第qi个数。

样例输入

10 3 10
1 2 3 4 5 6 7 8 9 10
18 4 1
18

样例输出

3 6 9 2 7 1 8 5 10 4
9

提示

来源

[提交][状态][讨论版]