
一点一点学算法
luckycoding
luckycoding只会失败!绝对不允许放弃!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu3501-Calculation 2
http://acm.hdu.edu.cn/showproblem.php?pid=3501 这题参考了别人的代码,才知道原来当数据较大时求解前n 项的欧拉函数和,可以直接利用 n * enlerfun( n) / 2求解,而此题要求的是非互质的,同样可以使用这个性质 #include #include #include using namespace std ; #define MOD原创 2013-06-08 14:07:57 · 808 阅读 · 0 评论 -
hdu4556-Stern-Brocot Tree
http://acm.hdu.edu.cn/showproblem.php?pid=4556 #include #include #include using namespace std ; #define maxn 1000005 #define INT __int64 INT ans[ maxn + 1] ; void enlerfun() { memset( ans , 0 , si原创 2013-06-08 14:41:23 · 869 阅读 · 0 评论 -
hdu1568-Fibonacci
http://acm.hdu.edu.cn/showproblem.php?pid=1568 用到了斐波那契数列的通项公式。 先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c); 假设给出一个数10234432,那么log10(10234432)=log10(1.0234432*10^7)=log10(1.0234432)+7;原创 2013-06-08 16:09:33 · 816 阅读 · 0 评论 -
hdu3117-Fibonacci Numbers
http://acm.hdu.edu.cn/showproblem.php?pid=3117 后四位存在周期15000,所以就打表打出了后四位的值。 前四位按照Fibonacci的通项公式取前四位即可 #include #include #include #include using namespace std; int fi[ 100 ] = { 0 , 1 , 1 } ; int L原创 2013-06-08 18:57:45 · 804 阅读 · 0 评论 -
hdu1061-Rightmost Digit(附快速幂简单原理)
http://acm.hdu.edu.cn/showproblem.php?pid=1061 1.快速幂实现a^N 求3^999(a=3,N=999):3 ^ 999 = 3 * 3 * 3 * … * 3,直接乘要做998次乘法。 快速幂方法实质使用了二分法进行时间优化: tmp+ = tmp-* a-; 3 ^ 1 = 3* 1 3 ^ 2 = (3原创 2013-06-09 15:46:05 · 885 阅读 · 0 评论 -
法雷级数
法雷级数定义 R.亨斯贝尔格著李忠翻译的《数学中的智巧》一书,介绍了法雷级数。这里每一行从0/1开始,以1/1结尾,其它数自左至右将所有的真分数按增加顺序排列;第n行是由所有分母小于或等于n的真分数组成,我们称为n阶法雷级数。如下表: F1: 0/1 1/1 F2: 0/1 1/2 1/1 F3: 0/1 1/3 1/2 2/3 1/1原创 2013-06-07 18:46:15 · 1058 阅读 · 0 评论 -
hdu2824-The Euler function
http://acm.hdu.edu.cn/showproblem.php?pid=2824 why?搞不懂为什么用素数筛法+欧拉函数就是过不了,只能使用简单点的了 #include #include #include using namespace std; #define maxn 3000010 #define INT __int64 int Prime[ maxn + 1 ]原创 2013-06-07 22:43:21 · 1145 阅读 · 0 评论 -
hdu1286-找新朋友
http://acm.hdu.edu.cn/showproblem.php?pid=1286 本来可以直接用普通的欧拉函数,但是,这个那样非常容易TLE,所以用素数筛法+欧拉函数; #include #include #include #include using namespace std ; #define maxn 100005 int prime[ maxn + 1 ] ; int原创 2013-06-07 22:00:11 · 1219 阅读 · 0 评论 -
hdu1081-To The Max
http://acm.hdu.edu.cn/showproblem.php?pid=1081 DP,最大矩阵和,首先将横坐标的数值,分别求和存储在二维数组中,然后使用三个for循环,第一二层分别表示第I 横层 ,和第j 横层,然后做差,就求出了纵坐标的和,当sum〉0就由k 向右累加; #include #include #include using namespace std ; int原创 2013-06-09 14:36:25 · 784 阅读 · 0 评论