摘要: 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含),指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。比如,A=[1,0] K=21 那么输出结构应该为100。 阅读全文
posted @ 2012-07-11 11:19 Cavia 阅读(130) 评论(0) 推荐(0) 编辑
摘要: Q:n!的末尾有多少个0A:n!=1*2*3*…*n,在质数中只有2*5=10,能够给最后结果末尾贡献0,所以将n!进行质数分解为2^m*…*5^n*…,末尾0的个数就等于min(m,n),又因为2出现的个数肯定多过5出现的个数,所以m>n,因此只需要统计n的个数即可。那么怎么计算n呢,有两种方法。方法1:直接的方法,从1到n,计算每一个数中因子5的个数。int num=0;for(int i=1;i<=n;++i){ int j=i; while(j%5==0) { num++; j=j/5; }}方法2:利用公式,num=[N/5]+[N... 阅读全文
posted @ 2012-07-11 10:07 Cavia 阅读(190) 评论(0) 推荐(0) 编辑
摘要: Q:给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。如何才能从这个无穷尽的流中随机的选取1000个关键字? A:首先定义长度为1000的数组,将前1000个关键字放置到数组中。然后对于第1001及以后的每一个关键字(设为第n个),这个关键字被选中的概率为1000/n,所以以这个概率来和数组中随机一个元素替换。 //1000/n概率的实现if(rand... 阅读全文
posted @ 2012-07-11 09:25 Cavia 阅读(721) 评论(0) 推荐(0) 编辑