HDU 1027 Ignatius and the Princess II
2015-12-07 16:55
295 查看
Ignatius and the Princess II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6016 Accepted Submission(s): 3549
[align=left]Problem Description[/align]
Now our hero finds the door to the BEelzebub feng5166. He opens the door and finds feng5166 is about to kill our pretty Princess. But now the BEelzebub has to beat our hero first. feng5166 says, "I have three question for you, if you can work them out, I will release the Princess, or you will be my dinner, too." Ignatius says confidently, "OK, at last, I will save the Princess."
"Now I will show you the first problem." feng5166 says, "Given a sequence of number 1 to N, we define that 1,2,3...N-1,N is the smallest sequence among all the sequence which can be composed with number 1 to N(each number can be and should be use only once in this problem). So it's easy to see the second smallest sequence is 1,2,3...N,N-1. Now I will give you two numbers, N and M. You should tell me the Mth smallest sequence which is composed with number 1 to N. It's easy, isn't is? Hahahahaha......"
Can you help Ignatius to solve this problem?
[align=left]Input[/align]
The input contains several test cases. Each test case consists of two numbers, N and M(1<=N<=1000, 1<=M<=10000). You may assume that there is always a sequence satisfied the BEelzebub's demand. The input is terminated by the end of file.
[align=left]Output[/align]
For each test case, you only have to output the sequence satisfied the BEelzebub's demand. When output a sequence, you should print a space between two numbers, but do not output any spaces after the last number.
[align=left]Sample Input[/align]
6 4
11 8
[align=left]Sample Output[/align]
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int a[1005],i;
for(i=1; i<=n; i++)
a[i]=i;
while(m>=2)
{
next_permutation(a+1,a+1+n);
--m;
}
for(i=1; i<=n; i++)
{
if(i==1)
printf("%d",a[i]);
else
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- 第十三周项目3 Dijkstra算法
- 第十五周项目--B-树的基本操作
- PAT 1013 数素数
- 修改JAVA_HOME无效,java版本保持不变的问题解决
- AndroidStudio中使用DDMS工具
- C语言中可变参数的宏定义
- 利用pdf2swf将PDF转换成SWF
- mysql操作技巧
- 网络虚拟化之FlowVisor:网络虚拟层(上)
- UNIX时间戳(timestamp)
- 第15周项目3B-树的基本运算
- 第五章IP基本原理(续)
- Visual Studio各版本区别
- 第十四周项目一 验证折半查找
- windows server 2012R2发起建立TCP连接特别慢的原因
- kinetis的UART串口寄存器
- android 百度地图 在线建议查询
- jboss8+EJB3+MDB Queue
- JupyterNotebook如何添加table of content
- 软件测试缺陷度量分析