C1048 - 领取助学金
题目描述
大学给每个学生发放助学金,每名学生都会被发放一张学生ID卡,其背面有一个磁条,记录着学生助学金的支取情况。卡的余额最初为0美元,每年的上限是40美元,并在学生生日最近的工作日支付给学生。因此,在工作日,总是会看到多达25名学生出现在附件的学生补助部门办公室领取他们的助学金。
助学金可以通过自动取款机ATM进行提取,这种自动取款机经过特殊的设计。结构上,它由内外两部分组成,内部为保险柜,其中存放着大量的1美元硬币,外部为存储箱,用于发放这些硬币。为了减少ATM被盗时的损失,只有当存储箱中的硬币被支取完毕后,保险箱才向其输出硬币。
每天早上ATM开机时,存储箱变为空,保险箱向存储箱输出一枚硬币,当此枚硬币被取走后,输出两枚硬币,然后是三枚硬币,每次增加一枚硬币,直到达到预设的上限 - k枚硬币,之后输出到存储箱的硬币数量重置为一枚,然后是两枚,按此循环。
每名学生依次排队,插入他的ID卡在ATM上取款,ATM会把该学生已经支取的助学金的总额写到ID卡上,如果学生支取的总额尚未达到每年设定的40美元上限值,那么他拿回自己的卡片,并重新排队(到队尾重新排队),继续等待取款。如果存储箱中的现金加上学生已经支取的现金数量超过40美元,学生只能支取与40美元之间的差额,剩余在存储箱中的现金将留给下一位学生支取,取足40美金的学生会离开队伍,不再继续排队了。
每个学生在取足40美金后离开队伍
现在请你编写一个程序,输入学生的数量N和ATM单次输出金币数量上限k,请输出这些学生离开排队序列的先后顺序。
输入格式
1行,包含两个正整数N和k,分别代表学生的数量和ATM单次输出金币数量上限,用空格分开
输出格式
输出1行,代表完成取款后依次离开队伍的学生序号,学生的序号按最开始排队时的先后顺序确定,第一个学生的序号为1。
输出的每个序号按右对齐输出,输出宽度为3(域宽为3)
输入输出样例
| 输入样例 | 输出样例 |
|---|---|
| 5 3 | 1 3 5 2 4 |
| 6 5 | 3 4 2 1 5 6 |
| 12 3 | 3 6 9 12 11 2 8 5 1 4 7 10 |
注意输出结果是右对齐,输出宽度为3,以5 3的输出为例,输出的是:
空格空格1空格空格3空格空格5空格空格2空格空格4
如果输出的数字是2位数,比如输出的是12,则输出的格式为:空格12,正好保证输出的宽度为3
数据范围与提示
100%的数据:$1 \le N \le 25$,$1 \le k \le 40$
测试点数目
共10个测试点,每个测试点10分
时间与内存限制
每个测试点时间:1000ms(1.0s),内存:256MiB
输入输出模式
本OJ支持两种输入输出模式