摘要: 八、密码发生器问题: 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了... 这个程序的任务就是把一串拼音字母转换为6位数字(密码)。我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。 变换的过程如下: 第一步. 把字符串6个一组折叠起来,比如wangximing则变为: wangxi ming 第二步. 把所有垂直在同一个位置的字符的ascii码值相加,得出6个数字,如上面的例子,则得出: 228 2. 阅读全文
posted @ 2013-05-04 22:22 HanelYuki 阅读(75) 评论(0) 推荐(0)
摘要: 一、 微生物增殖题目: 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草!答案:0 和 94371840代码:微生物增殖#include<iostre... 阅读全文
posted @ 2013-05-04 22:07 HanelYuki 阅读(129) 评论(0) 推荐(0)
摘要: 问题引入 对于32位字长的机器,大约超过20亿,用int类型就无法表示了,我们可以选择int64类型,但无论怎样扩展,固定的整数类型总是有表达的极限!如果对超级大整数进行精确运算呢? 我最近了解到一种处理方式:仅仅使用现有类型,但是把大整数的运算化解为若干小整数的运算,即所谓:“分块法”。乘法实例 如图表示了分块乘法的原理。可以把大数分成多段(此处为2段)小数,然后用小数的多次运算组合表示一个大数。可以根据int的承载能力规定小块的大小,比如要把int分成2段,则小块可取10000为上限值。注意,小块在进行纵向累加后,需要进行进位校正。示例代码:大数乘法void bigmul(int... 阅读全文
posted @ 2013-05-04 21:15 HanelYuki 阅读(141) 评论(0) 推荐(0)
摘要: 解法一:分治问题:对于不同的字符串,判断其相似度或求二者的“距离”。定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法为: 1.修改一个字符(如把“a”替换为“b”) 2.增加一个字符(如把“abdd”变为“aebdd”) 3.删除一个字符(如把“travelling”变为“traveling”)定义:把这个操作所需要的最少次数定义为两个字符串的距离,而相似度等于“距离+1”的倒数思想:采用递归的思想将问题转化成规模较小的同样的问题。分析: 如果两个串的第一个字符相同,如A=xabcdae和B=xfdfa,只要计算A[2,…,7]=abcdae和B[2,…,5]=f... 阅读全文
posted @ 2013-05-04 20:36 HanelYuki 阅读(371) 评论(0) 推荐(0)