快速幂取模 快速幂取模就是在O(logn)内求出a^n mod b的值。算法的原理是ab mod c=(a mod c)(b mod c)mod c,因此很容易设计出一个基于二分的递归算法。 以下是我的代码,以下代码必须保证输入的是合法的表达式,比如不能出现0^0 mod b: longexp_mod(longa,longn,longb) { longt; if(n==0)re...
基本上是别人的代码,自己改动一些,不过收获很大。 1/*这道题目借鉴他人的思路和代码,很有收获 2先看下面这个快速幂求余的运算 3递归用二分法,每个过程都求余。 4long exp_mod(long a,long n,long b) 5{ 6long t; 7if(n==0) return 1%b; 8if(n==1) return a%b; 9t=exp_mod(a,n/2,b); ...
认识快速幂 所谓的快速幂,表示的是快速的计算一个数的幂次,使用的是分治的思想,举个例子: 我们要求的是2^105,那么正常的求幂次的方法的时间复杂度是105次,采用幂次之后可以把105写成二进制1101001,那么105可以写成2^0 + 2^3 + 2^5 + 2^6,只要循环6次即可算出答案,又因为一般的答案会很大所以会有一个...
PKU的这道题虽然容易,但的确很有意思。我也是第一次用快速幂取模,一用,果然不同凡响。 快速幂取模,其实就是秦九韶算法取指数。 把n化成二进制形式后,得到一个多项式,写成秦九韶形式,多项式的加就是乘,乘则为指数运算(指数为2)。由于N的二进制位个数为log(n),这样把O(N)的问题化为O(log N)。 . /...
poj 3735 Training little cats - 矩阵快速幂 【题意】:有n只猫咪,开始时每只猫咪有花生0颗,现有一组操作,由下面三个中的k个操作组成: 1. g i 给i只猫咪一颗花生米 2. e i 让第i只猫咪吃掉它拥有的所有花生米 3. s i j 将猫咪i与猫咪j的拥有的花生米交换...
题意很裸,亮点在于将齐次仿射变换矩阵和快速幂结合起来。 题目读入延续了pku出题的ws风格,还得用一个dfs处理读入。 题目输出也很蛋疼,标准写法竟然会导致-0.0出现,必须手动加一个eps来修改偏差。没有spj的二货。 附上仿射变换矩阵: 平移 translate tx ty tz ...