hdu1027 Ignatius and the Princess II(排列问题)
来源:互联网 发布:用友沙盘模拟软件 编辑:程序博客网 时间:2024/05/18 01:06
Problem Description
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?
"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?
Input
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.
Output
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.
Sample Input
6 411 8
Sample Output
1 2 3 5 6 41 2 3 4 5 6 7 9 8 11 10
import java.io.IOException;import java.io.FileReader;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.StreamTokenizer;import java.io.PrintWriter;import java.io.OutputStreamWriter;class Main{public static final boolean DEBUG = false;public StreamTokenizer tokenizer;public PrintWriter cout;public BufferedReader cin;public int n, m;int[] f = new int[10];int[] ans;public void init() throws IOException{if (DEBUG) {cin = new BufferedReader(new FileReader("d:\\OJ\\uva_in.txt"));} else {cin = new BufferedReader(new InputStreamReader(System.in));}cout = new PrintWriter(new OutputStreamWriter(System.out));tokenizer = new StreamTokenizer(cin);f[0] = 0;f[1] = 1;for (int i = 2; i < 10; i++) f[i] = i * f[i - 1];}public int next() throws IOException{tokenizer.nextToken();if (tokenizer.ttype == StreamTokenizer.TT_EOF) return -1;else if (tokenizer.ttype == StreamTokenizer.TT_NUMBER) {return (int)tokenizer.nval;}return -1;}public boolean input() throws IOException{n = next();if (n == -1) return false;m = next();return true;}public void solve(){boolean[] vis = new boolean[10];ans = new int[n];int t;if (n >= 8) {t = 8;} else {t = n;}for (int i = 0; i < t; i++) {for (int j = 0; j < t; j++) {while (vis[j]) {j++;}if (i == t - 1) {ans[i] = j + 1;vis[j] = true;break;}if (m - f[t - i - 1] <= 0) {while (vis[j]) {j++;}ans[i] = j + 1;vis[j] = true;break;} else {m -= f[t - i - 1];}}}if (n >= 8) {for (int i = 1; i <= n - 8; i++) {cout.print(i + " ");}for (int i = 0; i < t; i++) {ans[i] += n - 8;}}for (int i = 0; i < t - 1; i++) cout.print(ans[i] + " ");cout.println(ans[t - 1]);cout.flush();}public static void main(String[] args) throws IOException{Main solver = new Main();solver.init();while (solver.input()) {solver.solve();}}}
0 0
- hdu1027 Ignatius and the Princess II(排列问题)
- hdu1027 Ignatius and the Princess II(全排列)
- hdu1027-Ignatius and the Princess II
- HDU1027 Ignatius and the Princess II
- HDU1027(Ignatius and the Princess II)
- HDU1027 Ignatius and the Princess II
- Hdu1027 Ignatius and the Princess II
- HDU1027 Ignatius and the Princess II
- HDU1027 Ignatius and the Princess II
- HDU1027 Ignatius and the Princess II
- hdu1027 Ignatius and the Princess II (全排列 & STL中的神器)
- HDU1027——Ignatius and the Princess II(全排列)
- HDU1027 Ignatius and the Princess II 【next_permutation】【DFS】
- HDU1027 - Ignatius and the Princess II (深搜)
- ACM-简单题之Ignatius and the Princess II——hdu1027
- HDU 1027 Ignatius and the Princess II 全排列
- hdu 1027 Ignatius and the Princess II 全排列
- HDU 1027 Ignatius and the Princess II (STL全排列)
- linux常用快捷键
- ORACLE PL/SQL基础 选择(IF CASE) 、 循环(LOOP WHILE FOR)
- Ubuntu下为Firefox安装Adobe Flash Player
- Makefile中指示符“include”、“-include”和“sinclude”的区别
- 苹果中国供应商再增20家
- hdu1027 Ignatius and the Princess II(排列问题)
- iOS真机调试证书那些事儿
- CCI: Count negative numbers in matrix
- hdu 1018 Big Number 数学
- win32 往图片中写水印
- C++ ”类“ 知识的回顾
- 第六周作业
- paip.输入法编程---词库多意义条目分割 python实现.
- Dll中运用vector的堆栈崩溃