poj 1715 Hexadecimal Numbers 排列组合

 1 /**
 2 大意: 给定16进制数的16个字母,,求第k大的数,,要求数的长度最大为8.,并且每个数互不相同。
 3 思路: 从高到低挨个枚举,每一位能组成的排列数 ,拿最高位来说,能做成的排列数为15*A(15,len-i)
 4           第二位 A(14,len-2)。。这样就可以找到k大的数的长度
 5 接下来 。找第k大的数。同上理 ,挨个枚举每一位即可。。若加上该位的排列数大于k,则该位就是这个数,继续枚举下一位
 6 **/
 7 
 8 /**  大神思路
 9 首先确定数字串的长度Len:从大到小枚举Len,每个Len下有15*P(15, Len-1)个数字串。每次用这个个数扣除输入的序数Count,直到序数Count将扣为负数时停止,就确定了长度Len。
10  
11 然后从高位到低位,从大到小确定每位数字:设当前确定的数字为第i位,则第i位的任何一个取值,都有P(16 - (Len - i + 1), i - 1)个数字串将已确定的第1到i位作为前缀。每次用这个个数扣除输入的序数Count,直到序数Count将扣为负数时停止,就确定了当前位的数字。
12  
13 注意不能有前导0。
14 **/
15 #include <iostream>
16 
17 using namespace std;
18 char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
19 int ans[10];
20 
21 int Axy(int x,int y){
22     int res =1;
23     if(y==0)
24         return 1;
25     while(y--){
26         res *= x;
27         x--;
28     }
29     return res;
30 }
31 
32 void solve(int count){
33     bool vis[16]={0},head = false;
34     int uselen = 0,countv;
35     for(int i=1;i<=8;i++){
36         int cnt = 15;
37         while(cnt){
38             if(!vis[cnt]){
39                 if((countv = Axy(16-1-uselen,8-i))<count){
40                     count -= countv;
41                 }else{
42                     vis[cnt] = true;
43                     break;
44                 }
45             }
46             cnt--;
47         }
48         ans[i] = num[cnt];
49         if(head||ans[i]!='0') uselen++;
50         if(ans[i]!='0') head = true;
51     }
52 }
53 
54 int main()
55 {
56     int cnt;
57     while(cin>>cnt){
58         bool head = false;
59         solve(cnt);
60         for(int i=1;i<=8;i++){     
61             if(head||ans[i]!='0'){     //去除前导0
62                 cout<<(char)ans[i];
63                 head = true;
64             }
65         }
66         if(!head)     // 若全为0 ,则输出0
67             cout<<0;
68         cout<<endl;
69     }
70     return 0;
71 }

 

转载于:https://www.cnblogs.com/Bang-cansee/p/3724108.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7虚拟机共享本机磁盘的方法

说明&#xff1a;这个方法不一定是通用的&#xff0c;也可能不是最快捷的&#xff0c;但是感觉比较稳妥的办法。 1&#xff0c;首先坚持两个进程是否启动&#xff1a;右击&#xff1a;我的电脑-管理-服务&#xff0c;检查server服务和Workstation服务是否启动。如果没有启动&a…

文件读写的“二进制模式”和“文本模式”

二进制模式&#xff1a;将内存中的数据&#xff08;01序列&#xff09;直接传送到文件中&#xff0c;没有任何转换。如&#xff1a;char ch 0x7d; fwrite(&ch, sizeof(char), 1, pfile);直接把0x7d这个01序列存储到文件中。文本模式&#xff1a;将内存中的数据&#xff08…

服务器小程序servlet的使用

servlet的创建使用一&#xff0c;三种创建方式1.1 实现servlet接口1.2 继承GenericServlet1.3 继承HttpServlet二&#xff0c;servlet使用2.1 web.xml文件的配置2.1.1 创建xml文件2.1.2 手写web.xml文件2.2 在8080端口下访问2.2.1 servlet的生命周期servlet是服务器小程序。是个…

hadoop MultipleInputs fails with ClassCastException (get fileName)

来自&#xff1a;http://stackoverflow.com/questions/11130145/hadoop-multipleinputs-fails-with-classcastexception Following up on my comment, the Javadocs for TaggedInputSplit confirms that you are probably wrongly casting the input split to a FileSplit: /**…

自己常用的Linux命令总结

原则&#xff1a;自己使用过的&#xff0c;不易记忆的&#xff0c;功能强大的 grep 名称意义&#xff1a;全称Global Regular Expression Print&#xff0c;表示全局正则表达式是一个强大的文本搜索工具&#xff0c;采用正则匹配命令格式&#xff1a;grep [options] files O…

XSS与CSRF两种跨站攻击比较

XSS&#xff1a;跨站脚本&#xff08;Cross-site scripting&#xff09; CSRF&#xff1a;跨站请求伪造&#xff08;Cross-site request forgery&#xff09; 在那个年代&#xff0c;大家一般用拼接字符串的方式来构造动态SQL 语句创建应用&#xff0c;于是SQL 注入成了很流行的…

褚时健:现在的年轻人太急了,我快90了还在摸爬滚打

转自&#xff1a;http://news.163.com/17/0715/08/CPCF0D6R00018AOR.html &#xff08;本人说明&#xff1a;这篇访谈太“鸡汤”了&#xff0c;我读了好几遍&#xff0c;里面精彩的部分我用红字标出来了&#xff0c;感觉褚时健老前辈的精神和做事的态度方法真的值得学习&#…

Java日期格式化SimpleDateFormat

package test;import java.text.SimpleDateFormat; import java.util.Date;public class TestDate {public static void main(String[] args) {// 大写的HH是24小时 小写的是12小时SimpleDateFormat sdf new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d null;…

VS或编译的时候不生成Release文件夹

今天在编译第三方类的时候&#xff0c;总是发布的时候报没有第三方类库的的Release版本 解决方案&#xff1a; Build>Configuration Manager>Release 编译》配置管理》选择发布版本 再编译就有了转载于:https://www.cnblogs.com/flyfish2012/p/3728516.html

el表达式,c标签的使用

el表达式的使用 学生类 public class Student {int id;String name;String sex;String birth;public Student() {}public Student(int id, String name, String sex, String birth) {super();this.id id;this.name name;this.sex sex;this.birth birth;}// el 表达式取实…

conda虚拟环境中安装ipython

问题&#xff1a;今天安装了tensorflow&#xff0c;启动ipython竟然提示如下&#xff1a; In [1]: import tensorflow as tf --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recen…

Web前端行业的了解

即将从事Web前端的工作的 先对即将从事的行业有个了解。 Web前端发展史&#xff1a; 第一个网页诞生于90年代初&#xff0c;早期的网页除了一些小图片和毫无布局可言的标题段落&#xff0c;其全由文字构成。然而随着时代的进步&#xff0c;互联网的 不断发展&#xff0c;接下来…

使用session保持登录状态,cookie保存用户账号密码

session保存登录状态与cookie保存账号密码1. session维持登录状态1.1 代码实现2. cookie保存账号密码2.1 什么是cookie2.2 cookie记住账号密码1. session维持登录状态 利用session的生命周期实现 1.1 代码实现 login页面表单部分 <form action"judgeLoginSession&qu…

用conda安装虚拟的R环境

R语言能不能像python一样创建虚拟环境&#xff0c;今天探索了这个问题&#xff0c;用如下方式。 1、建立一个python虚拟环境 conda create -n R_env python3.7 2、在R_env中安装R语言 conda install R 3、在R_env中安装Rstudio conda install rstudio 4、启动Rstudio成功…

js表单验证,给出友好的提示

js验证表单 注意&#xff1a; 只做非空验证, 只是个小demo学习思想&#xff0c;onblur onfocus onsubmit的使用&#xff0c;给出友好提示网上有很多有良好&#xff0c;强大的控件&#xff0c;用于用户输入 代码实现 js代码 <script>function check_form(form) {// 得到f…

conda安装特定版本的包

conda search python /*python 3.3.1 0 anaconda/pkgs/free*/ conda install python3.3.1 即是安装了python3.3.1

项目开发问题

开发过程中才用Gearman做后台计算&#xff0c;node做socket连接服务器和数据传输及基本验证&#xff0c;Gearman通过接收Action和参数后将相应的结果回调给node&#xff1b;node负责接收前端发送的action和参数给Gearman&#xff0c;并将Gearman计算的结果推送给前端&#xff0…

注册demo,使用jQuery异步验证账号是否存在

功能 jQuery验证账号是否存在form表单提交判断&#xff0c;失焦判断 界面 Ajax代码&#xff0c;验证用户rye1是否存在 function check_UserId() {$userId $("#userId").val();$.post("checkUserId","userId" $userId,function (result) { // 异…