
快速幂
文章平均质量分 84
u011008379
这个作者很懒,什么都没留下…
展开
-
poj 3233
这题是矩阵相乘,由于k很大,所以要借用整数快速幂(如果不会快速幂可以参看我之前的博文)的方法计算矩阵的相乘,所以方法与之前的差不多,如果这个会了,题目就不难了。这道题有更高级的方法,但是我用的是普通的方法,也能AC,适合初学者。 这道题我主要是写了矩阵相乘、相加和n次方,这不难理解。这道题用了一个小技巧,就是用struct“包装”了二维数组,这样返回矩阵和赋值将会更简单。原创 2014-02-27 23:50:04 · 677 阅读 · 0 评论 -
HDU 1061
这题是一道关于快速幂算法的题目,这道题有很多种解题方法,好像找规律也行,不过我在这里不打算讲找规律的方法(我也没找过),我主要是讲一下利用二进制来实现快速幂的方法。 例如:求a^b(不考虑超范围的问题)。先把b按二进制展开,即b=bn*2^n+......+b1*2^1+b0*2^0,所以a^b=a^(bn*2^n+......+b1*2^1+b0*2^0) =a^(bn*2^原创 2014-02-26 16:32:00 · 951 阅读 · 0 评论 -
HDU 1452
这道题是求一个数所有因子的和,但这道题给出的数是底数相同,但指数不同,而且十分的大。 先将2004分解成素因子乘积的形式,即2004=2^2 * 3 * 167,那么2004^x=2^(2*x) * 3^x * 167^x。由数论知识可知因子和函数是一个乘性函数f(又叫积性函数),所以对于两个互素的正整数a,b,有f(a*b)=f(a)*f(b)。在这里我们可以拆成f(2004^x原创 2014-03-06 14:15:10 · 774 阅读 · 0 评论