将十进制数转为一个n位数的密码(每位都是个m进制数)
2016-12-27 11:34
716 查看
例如一个6位数的10进制密码,共有106个密码,如果把每个6位数的密码编成号就是[0,106-1]。
这是十进制的情况,即6个位,每个位有10种选择。如果要遍历所有密码,需要6重for循环,每个循环10次。
假如是100位的密码,每位15中选择呢,那就需要100重for循环根本,不可能写代码遍历。
那么对于n个位,每位m种选择呢,如何遍历每个密码?如果也把这样的密码编号成一个十进制数,如何由这个十进制数得到每个位上的数字呢?
下面的代码可以实现这种转换。
这是十进制的情况,即6个位,每个位有10种选择。如果要遍历所有密码,需要6重for循环,每个循环10次。
假如是100位的密码,每位15中选择呢,那就需要100重for循环根本,不可能写代码遍历。
那么对于n个位,每位m种选择呢,如何遍历每个密码?如果也把这样的密码编号成一个十进制数,如何由这个十进制数得到每个位上的数字呢?
下面的代码可以实现这种转换。
void convert(int m,int n) { //1个n位数的密码,每位有m种选择,共m的n次方个密码,以下代码将0-m的n次方减一的十进制数转为一个n位的密码。 for(int i=0;i<Math.pow(m,n);i++) { HashMap<Integer,Integer> password=new HashMap<Integer,Integer>(); int sum=i; for(int j=n-1;j>=0;j--) { int digit=0; if(sum<Math.pow(m,j)) { digit=0; } else { digit=sum/(int)Math.pow(m,j); sum-=digit*Math.pow(m,j); } password.put(j,digit); } } }
相关文章推荐
- 发一个世界上任何一个人无法破解的纯6位数字母密码算法.
- 给出一个数,不多于五位,1.求出他是几位数2.分别打印出每位数3.倒序输出
- 一个c程序产生6位数的随机密码
- 请教我的PLSQL连服务器两个实例,无论输入任一数据库的用户名密码都是进同一个,请问有哪些原因?谢谢
- 通过调用一个求解阶乘的函数,求解一个三位数,该三位数等于其每位数字的阶乘之和。
- 判断一个十进制数是几位数
- 给一个不多于五位的正整数,要求: (1)求出他是几位数 (2)分别输出每位数字 (3)按逆序输出各位数字
- 中软面试(一):java写一个随机生成四位数的程序 每位数字不重复
- 有一个四位数 a1a2a3a4,每一位数都是0到9之间的一个数字(多种解法)
- Shell 命令行,实现一个获取任意位数的随机密码的脚本
- 对一个二进制的每位进行0和1反转,求反转后的二进制所对应的十进制数
- 详解Linux Shell 实现一个获取任意位数的随机密码的脚本
- 重新设定mysql密码~,网上方法都是,这里选一个。
- 给定一个整数判断位数并实现分别输出每位,逆序输出。
- 尽管是一个CS专业的学生,小B的数学基础很好并对数值计算有着特别的兴趣,喜欢用计算机程序来解决数学问题。现在,她正在玩一个数值变换的游戏。她发现计算机中经常用不同的进制表示同一个数,如十进制数123表达为16进制时只包含两位数7、11(B),用八进制表示时为三位数1、7、3。按不同进制表达时,各个位数的和也不同,如上述例子中十六进制和八进制中各位数的和分别是18和11。
- 新的一天新的开始,每天都是新的一天,都是一个新的开始
- 将现有系统用户密码转为.text加密方式的密码
- 每一天都是一个新的开始
- 在jsp下,一个实现将动态页面转为静态的方案
- [Delphi] 如何做一个可以帮我向网页自动填写用户名密码的软件啊??