质数与合数
摘自维基百科:
质数,又称素数,指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。
比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着非常重要的地位。
质因数分解 即
分解质因数 。每个合数都可以写成几个质数相乘的形式。其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分...
分类:
其他好文 时间:
2014-06-20 10:31:18
阅读次数:
274
有时会碰到数字太大无法用int运算的情况,比如1000的阶乘。解决方法是用char、string代替int进行竖式计算,可进行加、减、乘、除、阶乘、组合、比较大小,下面的方法都测试过
1 #region 运算方法 2 // 计算组合数 3 pub...
分类:
其他好文 时间:
2014-06-06 13:32:55
阅读次数:
213
POJ 1401 && ZOJ 2202 Factorial 阶乘N!的末尾零的个数
题目地址:
POJ 1401
ZOJ 2202
题意:
求N!后面有几个0。
分析:
组合数学类型的题目。
正常的话可能会去分解1~N数里面有几个5和2,但是这样的复杂度为O(nlogn)。
其实有更巧妙的办法,可以把问题分解成子问题。
可以发现N!末尾的0与1~N中...
分类:
其他好文 时间:
2014-06-05 04:43:02
阅读次数:
248
NYOJ 954 求N!二进制末尾几个0
题目地址:
NYOJ 954
题意:
中问题不解释。
分析:
即是求N!二进制末尾几个0,换句话就是求N!的因子有几个2。
具体做法跟POJ 1401一样,题解见:POJ
1401 && ZOJ 2202 Factorial 阶乘N!的末尾零的个数
代码:
/*
* Author: illuz...
分类:
其他好文 时间:
2014-06-05 01:18:49
阅读次数:
282
POJ 1150 The Last Non-zero Digit 数论+容斥
题目地址:
POJ 1150
题意:
求排列P(n, m)后面第一个非0的数。
分析:
为了熟悉题目中的理论,我先做了俩初级的题目:
POJ 1401,题解见:POJ
1401 && ZOJ 2202 Factorial 阶乘N!的末尾零的个数
NYOJ 954,题解见:NYO...
分类:
其他好文 时间:
2014-06-04 22:49:42
阅读次数:
322
Description
大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票。房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量。现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后....
分类:
其他好文 时间:
2014-06-03 12:24:25
阅读次数:
271
问题:
对于给定序列1...n,permutations共有 n!个,那么任意给定k,返回第k个permutation。0
分析:
这个问题要是从最小开始直接到k,估计会超时,受10进制转换为二进制的启发,对于排列,比如 1,2,3 是第一个,那么3!= 6,所以第6个就是3,2,1。也就是说,从开始的最小的序列开始,到最大的序列,就是序列个数的阶乘数。那么在1,3 , 2的时候呢?调整一...
分类:
其他好文 时间:
2014-06-01 14:03:55
阅读次数:
257
出题:不同大小烙饼的排序问题:对于N块大小不一的烙饼,上下累在一起,由于一只手托着所有的饼,所以仅有一只手可以翻转饼(假设手足够大可以翻转任意块数的
饼),规定所有的大饼都出现在小饼的下面则说明已经排序,则最少需要翻转几次,才能达到大小有序的结果(改变饼的顺序只能整体翻转,不能相邻交换);分析:假设...
分类:
其他好文 时间:
2014-05-25 22:25:24
阅读次数:
324
递归是我们在编程过程中用到的一种思想,当一个函数自身调用自身的时候,无论是直接或者间接地调用,都属于递归,下面对于什么时候用到递归以及怎么用递归,谈一点我个人初步的想法。
什么时候用到递归
当我们要解决的问题有着 重复执行的基本操作 的时候,可以考虑使用递归
用递归思想进行编程的时候需主要需要注意的几点内容
首先是 递归上限 ,通常是一个指出递归开始位置的 有效范围内 的对象,一般...
分类:
其他好文 时间:
2014-05-25 16:51:14
阅读次数:
216
h=lambda t:(reduce(lambda x,y:x*y,range(1,t+1)))
h(5)=120
reduce函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1,2个数据进行操作,得到的结果再与第三个数据用func()函数运算,最后得到一个结果。...
分类:
编程语言 时间:
2014-05-25 09:55:21
阅读次数:
477