00004笔试题
2016-03-03 20:15
309 查看
1.有八个相同的小球,其中有一个比较重,如何只称两次就可以把较重的发现出来?
解析:我的做法是:3 3 2的分法,
(1)8个小球分为三堆,个数分别为3 3 2,
(2)第一次称数量各位3的两堆,
(3)如果平衡,则较重的就在剩下的2个的那堆,第二次就可以称出来;
(4)如果3 3的不平衡,那边重就说明里面有较重的球,第二次将较重的那堆其中两个球拿出来称,剩余一个球,如果称的这两个球平衡,说明未称的那个球就是较重的球,当然如果这两个球一边重,说明那个球就是较重的球。
2.有30元,一元一瓶汽水,两个空瓶可以换一瓶汽水,问最多能喝多少瓶汽水?
解析:59瓶,这个自己可以在草稿纸上简单写写就可以得到答案。
3.找出200以内的素数并且打印出来。
算法:
解析:只要知道素数的定义:除了1和它本身以外再没有其他的因子的数就是素数,平时多积累一些简单的算法就可以。
4.10000阶乘求末尾有多少个连续0的个数
算法实现:
解析:这种题存在一种规律,阶乘末尾一个零表示一个进位,可以产生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
解析:我的做法是: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 stub int 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
相关文章推荐
- 自定义三叉树
- Ajax
- BZOJ 4412/Usaco2016 Feb Circular Barn(构造)
- 37. Sudoku Solver
- question_015-JAVA之Map的遍历方式
- Eigen矩阵运算
- Windows系统软件
- maven
- 29-题目1101:计算表达式
- NLTK学习笔记——开篇
- ID3算法
- leetcode题目总结(转)
- 1066. Root of AVL Tree (25)
- 免费天气预报接口
- String以及StringBuffer相关应用讲解
- ListView使用总结
- IO流
- 实习报告
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- BZOJ 2243: [SDOI2011]染色 树链剖分+线段树区间合并