描述:
输入一个10进制数字,请计算该数字对应二进制中0的个数,注意左数第一个1之前的所有0都不需要计算。不需要考虑负数的情况。
解题思路:
对于给定的数n,使用位运算:n=n&(n-1)可计算出对应二进制中1的个数,为count1。将input=n,input=input>>1逐个获取input中1的个数,为count2,如果input&1==1,则此时对应位上为0,记数t加1操作,当count1=count2时,循环终止,此时可获得t,即为0个个数,具体实现看下面代码。...
分类:
其他好文 时间:
2015-07-17 12:09:09
阅读次数:
141
刚刚看了王晓华前辈在《算法的乐趣》一书的前言中提到了一个面试题:
有一个由若干正整数组成的数列,数列中中的每个数都不超过32,已知数列中存在重复的数字,请给出一个算法找出这个数列中所有重复的数字。
我用java实现了一种方法:
package com.wr.FindSameNum;
public class FindSameNum {
public static void main(...
分类:
编程语言 时间:
2015-07-14 15:41:53
阅读次数:
321
解题思路:
对于奇数 n = 2k+1, 它的拆分的第一项一定是1, 考虑去掉这个1,其实就一一对应于2k的拆分,因此f(2k+1) = f(2k)。
对于偶数n = 2k: 考虑有1和没有1的拆分。有1的拆分,与(2k-1)的拆分一一对应,与上面奇数的情况理由相同:没有1的拆分,将每项除以2,正好一一对应于k的所有拆分,因此f(2k) = f(2k-1) + f(k)。
最终结果只要求除以十亿的余数,在int的表示范围内,因此也不需要大数运算。注意余数的性质:(a+b)%m = (a%m+b%m)%m...
分类:
其他好文 时间:
2015-07-14 11:38:06
阅读次数:
994
题目描述:
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。m属于[1,100],超出范围则报错。
例如:
1^3=1
2^3=3+5
3^3=7+9+11
4^3=13+15+17+19
解题思路:不难发现展开式从(n*n - n + 1)开始,步进2显示,共显示n个数。...
分类:
其他好文 时间:
2015-07-14 11:35:57
阅读次数:
93
题目描述:
输入一个字符串,将其中大写字母转换为对应小写字母之后的第五个字母,若原始大写字母为V~Z, 则转换为对应小写字母的值减21。其他字符不变,输出转换后的字符串。 例如,对于字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。
输入:字符串
输出:转换后的字符串
样例输入:Axs3mWss
样例输出:fxs3mbss...
分类:
其他好文 时间:
2015-07-14 11:34:26
阅读次数:
105
Redraiment的老家住在工业区,日耗电量非常大。是政府的眼中钉肉中刺,但又没办法,这里头住的可都是纳税大户呀。 今年7月,又传来了不幸的消息,政府要在7、8月对该区进行拉闸限电。但迫于压力,限电制度规则不会太抠门,政府决定从7月1日停电,然后隔一天到7月3日再停电,再隔两天到7月6日停电,一次下去,每次都比上一次晚一天。 Redraiment可是软件专业的学生,怎么离得开计算机。如果停电,就“英雄无用武之地”了。呵呵。 所以他开始盘算起自己回家的日子了,他想知道自己到家后到底要经历多少天倒霉的停电。你...
分类:
其他好文 时间:
2015-07-13 12:25:57
阅读次数:
2006
题目描述:
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号。
解题思路:
用list存储姓名,看谁剩到最后一个.在list长度遍历一次,如果是3的倍数则退出,同时记录队尾报数,然后再以现在的list报数,以此类推。...
分类:
其他好文 时间:
2015-07-13 12:25:40
阅读次数:
399
题目描述:
输入一个五位以内(包括5位)的正整数,(1)判断它是一个几位数;(2)逆序输出其各位数字。
输入:多组数据,每组一行
输出:对应一行输出
样例输入:56439
样例输出:5 93465
解题思路:使用StringBuffer的reverse方法即可。...
分类:
其他好文 时间:
2015-07-13 12:24:51
阅读次数:
127
最大公约数 欧几里得算法 描述:计算两个非负整数p和q的最大公约数:若q是0,则最大公约数为p。否则,将p除以q得到余数r,p和q的最大公约数即为q和r的最大公约数。 根据算法的自然描述,我们可以很轻松地得到以下的递归实现:1 public static int euclid(int p,...
分类:
编程语言 时间:
2015-07-13 11:38:24
阅读次数:
107
排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。内排序有可以分为以下几类:(1)、选择排序:直接选择排序、堆排序。(2)、交换排序:冒泡排序、快速排序..
分类:
编程语言 时间:
2015-07-11 18:52:21
阅读次数:
238