CD key 生成
题目描述如下:
某欧软件需要实现简易的CD-KEY算法,输入3个正整数,以空格隔开,根据者3个正整数生成的cd-key字符串。输出格式:xxxx-xxxx-xxxx-xxyy。
包含16个字符,以短划线隔开,其中,cd-key的最后两位yy是用于cd-key的自校验,确保cd-key本身是合法的。
cd-key使用的字符表:23456789ABCDEFGHJKLMNPQRSTUVWXYZ(共32个,由于1和I,0和O难以辨识,被剔除)
实现原理如下:
(1),输入3个32bit正整数,按顺序取每个正整数取低16bit,假设a,b,c,将abc串联在一起组成48bit的唤醒,然后从低到高,每次取5个bit,
用其取值作为下标,从32字符表中查出对应的字符,循环输出14个字符(提示:第一个输出的字符应该是c的低5bit)。
(2),上面输出的14个字符即cd-key的从做至右的前14个字符的ascll求和,从低到高,每5bit为下标,查表生成两个字符,作为第15,16,个cd-key
的字符即为yy
时间限制:无
内存限制:无
输入: 输入3个正整数,以空格隔开
样例输入:1 1 1
样例输出:3224-2262-2A22-J2CR
答案
python:
num=raw_input()
char_table="23456789ABCDEFGHJKLMNPQRSTUVWXYZ"
str_14=''
str_15=''
str_16=''
result=''
num2 = 0
bin_num1 = str(bin(int(num[0]))).replace('0b','')
bin_num2 = str(bin(int(num[2]))).replace('0b','')
bin_num3 = str(bin(int(num[4]))).replace('0b','')
bin_48 = bin_num1.zfill(16) + bin_num2.zfill(16) + bin_num3.zfill(16)
for i in range(14):
str_14=str_14+char_table[int(bin_48[-5:],base=2)]
bin_48 = bin_48[-5:]+bin_48[:-5]
for i in range(14):
num2 = ord(str_14[i]) +num2
tmp_str_2=str(bin(int(num2))).replace('0b','').zfill(32)[-10:]
str_15=char_table[int(tmp_str_2[-5:],base=2)]
str_16=char_table[int(tmp_str_2[:-5],base=2)]
result_tmp=str_14+str_15+str_16
for i in range (16):
if i % 4 == 0 and i!=0:
result=result+'-'+result_tmp[i]
else :
result = result+result_tmp[i]
print result
CD key 生成的更多相关文章
- Springboot集成cache的key生成策略
代码接上文:深度理解springboot集成redis缓存之源码解析 ## 1.使用SpEL表达式 @Cacheable(cacheNames = "emp",key = &quo ...
- Git SSH Key 生成步骤
it是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置. github的ssh配置如下: 一 . 设置git的user name和email: $ git ...
- [转] Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Github SSH 的key 生成步骤下
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Git SSH Key 生成步骤及使用
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- github管理的建立(SSH Key生成步骤)
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Mac ssh key生成
转载https://blog.csdn.net/wangjunling888/article/details/51115659 1. 查看秘钥是否存在 打开终端查看是否已经存在SSH密钥:cd ~/. ...
- ssh key生成
Mac电脑用终端生成SSH key 访问自己的Github 字数684 阅读427 评论4 喜欢15 前言:最近有不少刚刚使用github管理代码的开发者或者新手码农在网上 问我如何关联自己的gith ...
- Git 中 SSH key 生成步骤
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key. 第1步:创建SSH Key.在windows下 ...
随机推荐
- 移动开发之fastclick 点击穿透
穿透(点穿)是在mobile各种浏览器上发生的常见的bug.可能是由click事件的延迟(300ms)或者事件冒泡导致 现象:在A页面中有个 btn1<或a标签>,在B页面中有个 btn2 ...
- poj2486 Apple Tree (树形dp)
题意:有一颗苹果树,树上的u节点上有num[u]个苹果,树根为1号节点,囧king从根开始走,没走到一个节点就把接点上的苹果吃光,问囧king在不超过k步的情况下最多吃多少个苹果. 解题思路:处理出两 ...
- Solrj日期范围查询
在做依据日期来检索的时候普通的格式化会出错,试了好多种仅仅有一种可行 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH ...
- struts2 全局格式化,格式化时间,金钱,数字
//在前台页面去控制时间,数字,小数,金钱,是极其不明智的选择,除非你是写了良好的 js api 像freemarker , struts 都有良好的标签,我们应该好好利用,才发现的,给大家分享一下 ...
- javascript how sort() work
Array.prototype.sort() 方法一般用来对数组中的元素进行排序,既可以对数字排序,也可以对字符串进行排序.如果没有指定比较函数,会根据数组中字符的Unicode编码来进行排序.这对于 ...
- Oracle 客户端配置笔记
1.右击桌面的我的电脑 -> 高级 -> 环境变量,新建 1) 变量名:ORACLE_HOME 变量值:D:\app\instantclient_11_2 2) 变量名:TNS_ADMIN ...
- 善于 调用Windows API
前一段时间看见别人做的一个自动填写信息并且点击登录的程序,觉得很有意思. 其实就是在程序中调用Windows的API,那么如何调用,下面就做个简单的介绍. 写的简单粗暴, 不喜轻喷. 0.首先引入名称 ...
- 腾讯QQ首次在PC端采用气泡式聊天界面(from:36kr)
小伙伴们,你们是否已经发觉,曾经爱过的姑娘在不知不觉中已变了模样,曾经鲜艳的红领巾也不再飘荡于前胸,而曾经最熟悉的QQ电脑 UI,竟在不知不觉中改头换面了. 没关系,少年,还不晚,今天,让我们携起手来 ...
- jQuery数据缓存data(name, value)详解及实现
一. jQuery数据缓存的作用 jQuery数据缓存的作用在中文API中是这样描述的:“用于在一个元素上存取数据而避免了循环引用的风险”.如何理解这句话呢,看看我下面的举例,不知道合不合适,如果你有 ...
- TJU 2944 Mussy Paper 最大权闭合子图
传送门 给你一些东西, 每个东西有一个值,有正有负. 在给一些关系, 选了其中一个物品, 和他有关系的也必须全都选上, 关系是单向的. 问最后的最大价值是多少, 如果小于0输出“ **** ”( ...