I come, I see, I conquer

                    —Gaius Julius Caesar

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

1.  1024!末尾有多少个0?

 

2.  编程实现两个正整数的除法(不能用除法操作符)。

 

3.  请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句。

 

4.  两个数相乘,小数点后位数没有限制,请写一个高精度算法。

 

5.  编程实现把十进制数(long型)分别以二进制和十六进制形式输出,不能使用printf系列。

 

6.  输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

例如:如果输入如下矩阵:

1           2           3            4

5           6           7            8

9           10         11          12

13         14         15          16

则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。

 

7.  用1, 2, 2, 3, 4, 5这六个数字,写一个main函数,打印出所有不同的排列。

如:512234, 412345等,要求:"4"不能在第三位,"3"与"5"不能相连。

 

8.  求两个或N个数的最大公约数和最小公倍数。

 

9.  如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。

对于一个给定的整数,输出所有这种素数和分解式。

注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式)。

例如,对于整数8,可以作为如下三种分解:

(1) 8 = 2 + 2 + 2 + 2

(2) 8 = 2 + 3 + 3

(3) 8 = 3 + 5

 

10.  输入n个整数,输出其中最小的k个。

例如,输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。

 

11.  求1 + 2 + … + n

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A ? B : C)。

 

12.  定义Fibonacci数列如下:

         0                     if n = 0

f(n)= 1                     if n = 1

         f(n-1)+f(n-2)   if n >= 2

输入n,用最快的方法求该数列的第n项。

 

13.  输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于m。

要求将其中所有的可能组合列出来。

 

14.  输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。

 

15.  对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一。

现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。

 

16.  四对括号可以有多少种匹配排列方式?比如两对括号可以有两种:()()和(())

 

17.  我们把只包含因子2, 3和5的数称作丑数(Ugly Number)。

例如:6, 8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。

求按从小到大的顺序的第1500个丑数。

 

18.  输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1, 2, 3一直到最大的3位数即999。

 

19.  一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。

 

20.  一串首尾相连的珠子(m个),有N种颜色(N<=10)。

设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。

 

21.  设计一个系统处理词语搭配问题,比如说中国和人民可以搭配,则中国人民,人民中国都有效。

要求:  *系统每秒的查询数量可能上千次;  *词语的数量级为10W;  *每个词至多可以与1W个词搭配。

当用户输入中国人民的时候,要求返回与这个搭配词组相关的信息。

 

22.  有一千万条短信,以文本文件的形式保存,一行一条,有重复。

请用5分钟时间,找出重复出现最多的前10条。

 

23.  从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。

2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。

 

24.  实现函数double Power(double base, int exponent),求base的exponent次方。不需要考虑溢出。

 

25.  给出一个文件,里面包含两个字段{url、size},即url为网址,size为对应网址访问的次数。

问题1、利用Linux Shell命令或自己设计算法,查询出url字符串中包含“baidu”子字符串对应的size字段值;

问题2、根据问题1的查询结果,对其按照size由大到小的排列。

(说明:url数据量很大,100亿级以上)

 

26.  a~z包括大小写与0~9组成的N个数。用最快的方式把其中重复的元素挑出来。

 

27.  已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、2、3的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n的概率均为1/n。要求复杂度最低。

 

28.  有10个文件,每个文件1G,每个文件的每一行都存放的是用户的query,每个文件的query都可能重复。要求按照query的频度排序。

 

29.  在8x8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。

 

30.  某公司有几万名员工,请完成一个时间复杂度为O(n)的算法对该公司员工的年龄作排序,可使用O(1)的辅助空间。

 

31.  写一个函数,求两个整数的之和,要求在函数体内不得使用+、-、×、÷。

 

posted on 2008-09-13 13:20  jcsu  阅读(1363)  评论(0编辑  收藏  举报