博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[题解]CQOI2012 T1 编号 number
阅读量:4654 次
发布时间:2019-06-09

本文共 5489 字,大约阅读时间需要 18 分钟。

编号 number

【题目描述】

你需要给一批商品编号,其中每个编号都是一个7位16进制数(由0~9,a~f组成)。为了防止在人工处理时不小心把编号弄错,要求任意两个编号至少由三个位置对应的数字不相同。第一个编号为0000000,第二个编号为不违反上述规定的前提下最小的编号,……,每次分配一个新编号时,总是选择不和前面编号冲突的最小编号(注意编号都是16进制数,可以比较大小)。按此规律,前面若干编号分别是:0000000,0000111,0000222,……,0000fff,0001012,0001103,0001230,0001321,0001456,……

输入k,你的任务时求出第k小的编号。

【输入】

第一行为整数k。

【输出】

输出第k小的编号(字母必须输出小写)。输入保证这个编号存在。

【样例】

number.in

20

 

number.out

0001321

【数据规模】

1-3数据点:k<=200

4-7数据点:k<=10000

8-10数据点:k<=200000

---------------------------------------------------------------------------------------------------------------------------------------------------

【题解】

    今天做了去年的重庆省选题,第二次做还是跪了。(虽说去年lz是个猹。。)感冒了,调不出来程序,顺便就写个简单的题解吧。下面进入正题。。。

    一道很简单的数位排列问题。本题是一个7位的16进制数排列,但可以简化为五维。题目中说至少有三位不相同,那么可以确定两个不相同数位。如果两个数位的位置不同,那么即使其它五个数都相同,也至少有三位不同。

    废话不多说,直接上代码。。

1 /*   2 PROG:bzoj1805   3 ID:waiting   4 TYPE:数学   5 POINT:   6 {   7     排列组合。   8     本题是一个7位的16进制数排列,但可以简化为五位。   9     题目中说至少有三位不相同,那么可以确定两个不相同数位。如果两个数位的位置不同,那么即使其它五个数都相同,也至少有三位不同。  10     以下表示出排列:  11     --00000  12     -0-0000  13     -00-000  14     -000-00  15     -0000-0  16     -00000-  17     0--0000  18     0-0-000  19     0-00-00  20     0-000-0  21     0-0000-  22     00--000  23     00-0-00  24     00-00-0  25     00-000-  26     000--00  27     000-0-0  28     000-00-  29     0000--0  30     0000-0-  31     00000--  32     ('0'表示可以相同的数字,'-'表示不同位)  33     根据排列组合C(7,2)=21,共有21种排列。  34     规定:a[i][a1][a2][a3][a4][a5]为第i种排列方式下除去不同位后剩下的五个数位分别a1、a2、a3、a4、a5。  35 }  36 */ 37 #include
38 #include
39 using namespace std; 40 #define MAXN 20 41 int k; 42 bool a[30][MAXN][MAXN][MAXN][MAXN][MAXN]; 43 int main() 44 { 45 scanf("%d",&k); 46 int a1,a2,a3,a4,a5,a6,a7; 47 for(a1=0;a1<=15;a1++) 48 for(a2=0;a2<=15;a2++) 49 for(a3=0;a3<=15;a3++) 50 for(a4=0;a4<=15;a4++) 51 for(a5=0;a5<=15;a5++) 52 for(a6=0;a6<=15;a6++) 53 for(a7=0;a7<=15;a7++) 54 { 55 if(!a[0][a3][a4][a5][a6][a7] 56 &&!a[1][a2][a4][a5][a6][a7] 57 &&!a[2][a2][a3][a5][a6][a7] 58 &&!a[3][a2][a3][a4][a6][a7] 59 &&!a[4][a2][a3][a4][a5][a7] 60 &&!a[5][a2][a3][a4][a5][a6] 61 &&!a[6][a1][a4][a5][a6][a7] 62 &&!a[7][a1][a3][a5][a6][a7] 63 &&!a[8][a1][a3][a4][a6][a7] 64 &&!a[9][a1][a3][a4][a5][a7] 65 &&!a[10][a1][a3][a4][a5][a6] 66 &&!a[11][a1][a2][a5][a6][a7] 67 &&!a[12][a1][a2][a4][a6][a7] 68 &&!a[13][a1][a2][a4][a5][a7] 69 &&!a[14][a1][a2][a4][a5][a6] 70 &&!a[15][a1][a2][a3][a6][a7] 71 &&!a[16][a1][a2][a3][a5][a7] 72 &&!a[17][a1][a2][a3][a5][a6] 73 &&!a[18][a1][a2][a3][a4][a7] 74 &&!a[19][a1][a2][a3][a4][a6] 75 &&!a[20][a1][a2][a3][a4][a5]) 76 { 77 k--; 78 if(!k) 79 { 80 printf("%x%x%x%x%x%x%x\n",a1,a2,a3,a4,a5,a6,a7); 81 return 0; 82 } 83 a[0][a3][a4][a5][a6][a7]=true; 84 a[1][a2][a4][a5][a6][a7]=true; 85 a[2][a2][a3][a5][a6][a7]=true; 86 a[3][a2][a3][a4][a6][a7]=true; 87 a[4][a2][a3][a4][a5][a7]=true; 88 a[5][a2][a3][a4][a5][a6]=true; 89 a[6][a1][a4][a5][a6][a7]=true; 90 a[7][a1][a3][a5][a6][a7]=true; 91 a[8][a1][a3][a4][a6][a7]=true; 92 a[9][a1][a3][a4][a5][a7]=true; 93 a[10][a1][a3][a4][a5][a6]=true; 94 a[11][a1][a2][a5][a6][a7]=true; 95 a[12][a1][a2][a4][a6][a7]=true; 96 a[13][a1][a2][a4][a5][a7]=true; 97 a[14][a1][a2][a4][a5][a6]=true; 98 a[15][a1][a2][a3][a6][a7]=true; 99 a[16][a1][a2][a3][a5][a7]=true; 100 a[17][a1][a2][a3][a5][a6]=true; 101 a[18][a1][a2][a3][a4][a7]=true; 102 a[19][a1][a2][a3][a4][a6]=true; 103 a[20][a1][a2][a3][a4][a5]=true; 104 } 105 } 106 return 0; 107 }

写得有点冗余,当时直接写了个小程序打出来的>_<  实在不想手码。。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/CQBZOIer-zyy/archive/2013/01/14/2860323.html

你可能感兴趣的文章
HDU 2068 RPG的错排(错排公式 + 具体解释)
查看>>
Html标签之frameset&图片切换
查看>>
OpenGL中实现天空顶(SkyDome)的类: CSkyDome
查看>>
UISwitch | UIStepper
查看>>
jap _spring _maven
查看>>
IE8兼容性问题
查看>>
JS变量作用域
查看>>
IIS principle
查看>>
Oracle 如何对中文字段进行排序
查看>>
第七章 数组实验
查看>>
003_ElasticSearch详解与优化设计
查看>>
windows hosts
查看>>
PHP 初学之登录查询小case
查看>>
Spring 4 官方文档学习(十五)CORS支持
查看>>
git使用:本地项目推送到gitlab
查看>>
react学习笔记1
查看>>
transition 属性(逐渐变色)
查看>>
关于CURL的初步认识
查看>>
如何使用 JDBC 调用存储在数据库中的函数或存储过程
查看>>
Js通过原型继承创建子类
查看>>