HDU 1027 组合数学
2014-02-17 00:16
351 查看
题目:
题意需要理解一下,到底怎么排序,然后就简单了
Ignatius and the Princess II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4066 Accepted Submission(s): 2436
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?
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 4
11 8
Sample Output
1 2 3 5 6 4
1 2 3 4 5 6 7 9 8 11 10
代码:
#include<stdio.h> #include<stdlib.h> int comp(const void*a,const void*b) { return *(int*)b-*(int*)a; } void main() { int i,j,k,n,m,a[100001],temp; while(scanf("%d%d",&n,&m)!=EOF) { for(i=0;i<n;i++)//数组赋初值 a[i]=n-i; for(i=0;i<m-1;i++)//操作次数 { for(j=0;j<n;j++) { if(a[j+1]<a[j]) break; }//确定调换的位置 for(k=0;k<n;k++) { if(a[k]>a[j+1]) { temp=a[j+1]; a[j+1]=a[k]; a[k]=temp; break; } } qsort(a,j+1,sizeof(int),comp);//尾数排序 } for(j=n-1;j>0;j--) { printf("%d ",a[j]); } printf("%d\n",a[0]); } }
相关文章推荐
- hdu 1996 汉诺塔VI 组合数学
- hdu 4045(组合数学,第二类斯特林数)
- hdu 6036 NTT取模(板子)+组合数学
- Famous Stone Collector HDU - 4248 组合数学+dp
- hdu-5719 Arrange(组合数学)
- hdu 3944 数学组合+帕斯卡定理
- HDU - 4810 Wall Painting(组合数学)
- 组合数学 + 大数乘法 + 大数除法 之 hdu 1261 字串数
- hdu 4045 组合数学
- HDU 4372 Count the Buildings [组合数学]
- 【HDU】1131 - Count the Trees(组合数学 - 卡特兰数 & java)
- hdu 4704 Sum【组合数学/费马小定理/大数取模】By cellur925
- hdu 6036 NTT取模(板子)+组合数学
- Famous Stone Collector HDU - 4248 组合数学+dp
- HDU 1799 循环多少次?(组合数学)
- hdu - 1205 - 吃糖果 - (组合数学)
- hdu 5651 组合数学+费马小定理求逆元
- HDU - 4810 Wall Painting(组合数学)
- hdu 4810 Wall Painting(组合数学)
- HDU 1796 How many integers can you find [容斥定理] 【组合数学】