输出指定序列的前面第N个序列
来源:互联网 发布:金山数据恢复和 编辑:程序博客网 时间:2024/05/25 23:27
输入第一行两个数,第一个数表示序列有多少个元素,第二个数表示要输出这个序列前面的第K个。
第二行有N个数,表示序列。序列中只有从1到N工N个数
以0 0结束输入
代码如下:
/*样例输入 5 44 1 3 2 55 11 2 3 4 55 1195 4 3 2 10 0样例输出3 5 4 1 2-11 2 3 4 5*/#include<iostream>#include<cstdio>using namespace std;__int64 A(int n){if(n==0)return 1;__int64 ret=1;for(int i=2;i<=n;++i){ret*=i;}return ret;}int cnt[25];__int64 ori[25];int visit[25];int main(){freopen("data.txt","r",stdin);ios::sync_with_stdio(false);int n;__int64 k;while(cin>>n>>k){if(n==0&&k==0)break;__int64 pos=0;for(int i=1;i<=n;++i){cin>>ori[i];cnt[i]=i;}for(int i=1;i<=n;++i){int top=ori[i];pos+=(A(n-i)*(cnt[top]-1));for(int t=top;t<=n;++t){cnt[t]--;}}pos++;if(pos<=k){cout<<-1<<endl;continue;}///////////////////////////////////////////////////cout<<pos<<endl;pos-=k;//cout<<"pos="<<pos<<endl;memset(visit,0,sizeof(visit));//for(int i=1;i<=n;++i){//cnt[i]=i;//}for(int i=1;i<=n;++i){__int64 v=A(n-i);//cout<<"pos="<<pos<<' '<<"v="<<v<<"n,i "<<n<<' '<<i<<endl;__int64 tmp=pos/v;if(pos%v)tmp++;pos=pos-v*(tmp-1);int d=0;int dis;//cout<<"tmp="<<tmp<<endl;for(dis=1;dis<=n;++dis){if(!visit[dis])d++;if(d==tmp)break;}//cout<<"d="<<d<<' '<<"dis="<<dis<<endl;ori[i]=dis;visit[dis]=1;//for(int t=dis;t<=n;++t){//cnt[t]--;//}}for(int i=1;i<=n;++i){cout<<ori[i]<<' ';}cout<<endl;}return 0;}
0 0
- 输出指定序列的前面第N个序列
- 编制递归函数fiber(Int n )返回第n 个fibnacci数,以此输出fibnacci序列的第20个数。
- 输出前n个fibonacci序列的值及它们的和(fibonacci序列为1,1,2,3,...)
- 求递推序列的第N项
- 求递推序列的第N项
- 求递推序列的第N项
- 输出Fubnacci序列的第20个数
- 输出任意多个序列的排列组合
- hdu1027(n个数的按字典序排列的第m个序列)
- 005_010 Python 选择序列中最小的第n个元素
- leetcode_60. Permutation Sequence 找n的全排列中的第k个序列
- poj 1019 求一个1到n的序列中,第k个数字是多少
- hdu1027 给出n,m,求n个数的按字典序排列的第m个序列
- 输出和为n的所有的连续自然数序列
- 排除指定的序列
- Kolakoski序列--输出1,2的前n个数
- N个数组,从每个数组中取出一个数,组成一个序列,输出所有可能的情况
- 一个无序自然数序列有N个自然数,快速找到二者之和为M的两个整数并输出
- 黑马程序员----------java基础知识(2)
- 设计模式学习--------7.工厂方法模式学习
- C#中json转为xml源码(转)
- java解析xml四种方式(2)-SAX方式
- 避免SQL注入三大方法
- 输出指定序列的前面第N个序列
- FireMoneky Windows下的消息管理器组件
- Linux smaps接口文件结构
- Android平台调用Web Service:线程返回值
- 状态机编程实例及适用范围
- socketpair
- 利用Python快速做LCD阴阳码转换(按位取反)
- UML学习笔记(一)
- TOJ 4596 一行盒子 -- 双向链表