本文主要是介绍00004笔试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.有八个相同的小球,其中有一个比较重,如何只称两次就可以把较重的发现出来?
解析:我的做法是:3 3 2的分法,
(1)8个小球分为三堆,个数分别为3 3 2,
(2)第一次称数量各位3的两堆,
(3)如果平衡,则较重的就在剩下的2个的那堆,第二次就可以称出来;
(4)如果3 3的不平衡,那边重就说明里面有较重的球,第二次将较重的那堆其中两个球拿出来称,剩余一个球,如果称的这两个球平衡,说明未称的那个球就是较重的球,当然如果这两个球一边重,说明那个球就是较重的球。
2.有30元,一元一瓶汽水,两个空瓶可以换一瓶汽水,问最多能喝多少瓶汽水?
解析:59瓶,这个自己可以在草稿纸上简单写写就可以得到答案。
3.找出200以内的素数并且打印出来。
算法:
package com.dqpi.test;public class Prime {/** 最普通的算法:* 打印num以内的素数并返回素数个数* n、m分别为外、内层循环*/public void prime(int num){a:for(int n=2;n<=num;n++) { for(int m=2;m<=n/2;m++) { if(n%m==0) {continue a;}} System.out.println(n+"\t"); } }public static void main(String args[]){ Prime p = new Prime();p.prime(20);}
}
解析:只要知道素数的定义:除了1和它本身以外再没有其他的因子的数就是素数,平时多积累一些简单的算法就可以。
4.10000阶乘求末尾有多少个连续0的个数
算法实现:
package com.dqpi.test;
/*** * @author 李勇勇**/
public class ZeroNum {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubint number = 10000;int count = 0;while (number>0){count = count + number / 5;number = number / 5;}System.out.println(count);}}
解析:这种题存在一种规律,阶乘末尾一个零表示一个进位,可以产生0的有:0 2 4 5 6 8 结尾的数字,2是足够的,因为4、6、8当中都含有因子2,所以都可看当是2,那么关键在于5的数量了那么该问题的实质是要求出1~10000含有多少个5由特殊推广到一般的论证过程可得:
1、 每隔5个,会产生一个0,比如 5, 10 ,15,20.。。
2 、每隔 5×5 个会多产生出一个0,比如 25,50,75,100
3 、每隔 5×5×5 会多出一个0,比如125.
所以10000!后面的0的个数就是:10000/5+10000/25+10000/125+10000/625+10000/3125=2000+400+80+16+3=2499
这篇关于00004笔试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!