知识补充:
如果a和b关于m同于,那么(a - b )是m的整数倍。
负数取余运算:不同的语言有不同的方法,其中C和JAVA是按第一个数的符号确定结果的符号,C++则要依据系统而定。 取余运算的发展:1.(a+b)%p=(a%p+b%p)%p1.(a + b) \% p = (a \% p + b \% p) \% p2.(a?b)%p=(a%p?b%p)%p2.(a * b) \% p...
分类:
其他好文 时间:
2015-07-31 18:28:25
阅读次数:
117
快速幂运算顾名思义,就是快速算某个数的多少次幂。其时间复杂度为 O(log?N), 与朴素的O(N)相比效率有了极大的提高。以下以求a的b次方来介绍把b转换成二进制数。该二进制数第i位的权为例如11的二进制是101111 = 2³×1 + 2²×0 + 2¹×1 + 2º×1因此,我们将a¹¹转化为...
分类:
其他好文 时间:
2015-06-10 19:14:55
阅读次数:
140
题目的意思很清楚。求最小的x使2^x mod n = 1。n是输入的。
直接暴力过,用快速幂运算。一开始忘记了n = 1的情况,导致TLE。
下面的是AC的代码:
#include
using namespace std;
int main()
{
int n, x, i;
while(cin >> n)
{
if(n % 2 == 0 || n == 1) ...
分类:
其他好文 时间:
2015-06-01 09:48:43
阅读次数:
119
这道题的问题就是说能否对一个给定的置换进行开方运算
关于这个问题讲的最为详细的是05年集训队论文
潘震皓:《置换群快速幂运算研究与探讨》
对于一个长度为l的轮换,若gcd(l,k)==1,则可以开k方
若gcd(l,k)!=1则对于单个循环是不能开k方的
而若有m个长度为l的轮换,只需要保证gcd(m*l,k)==m就可以
因为开k方是k次方的逆运算,只要保证目标轮换的k次方会分裂...
分类:
其他好文 时间:
2014-08-12 00:47:13
阅读次数:
212
Implement pow(x, n).
思路:快速幂运算,需要考虑指数为负数,同时底数为0的情况,这种属于异常数据,代码里没有体现。
class Solution {
public:
double pow_abs(double x, unsigned int n)
{
if (n == 0)
{
return 1;...
分类:
其他好文 时间:
2014-08-04 21:32:48
阅读次数:
314
Invoker
Problem Description
On of Vance's favourite hero is Invoker, Kael. As many people knows Kael can control the elements and combine them to invoke a powerful skill. Vance like Kael v...
分类:
其他好文 时间:
2014-07-26 02:16:36
阅读次数:
312
...起床了 先把这题给过了 还是今天凌晨留下来的....刚开始真sb啊 以为矩阵构造出来不能进行快速幂运算的 一定要借助单位矩阵.....一般你构造出来的时候 2个矩阵的行列不是全都相等的 为了方便运算 我们可以空余位置默认为0反正我是这样解决的 ....好像这个解决方法有点渣 我也不清楚... ...
分类:
其他好文 时间:
2014-07-18 18:20:30
阅读次数:
262
http://poj.org/problem?id=1721
大致题意:原始序列通过洗牌机洗牌s次后变为当前序列,已知当前序列,求原始序列。
在置换群快速幂运算 研究与探讨中最后有详解,有两种解法,一种是求出置换的长度a(即一副牌洗a次后变回原来的位置),现已知原始序列置换s次变为当前序列,那么当前序列再置换a-s次就是原始序列了。求a就是直接模拟每个置换的过程,直到某序列与当...
分类:
其他好文 时间:
2014-06-18 12:14:44
阅读次数:
203
http://poj.org/problem?id=3128
大致题意:输入一串含26个大写字母的字符串,可以把它看做一个置换,判断这个置换是否是某个置换的平方。
思路:详解可参考置换群快速幂运算
研究与探讨。
可以先正着考虑一个置换的平方出现什么情况。对于置换中的循环,若其长度为偶数,平方以后一定分成了两个长度相等的循环,若长度是奇数,平方以后仍是一个循环,长度不变。因...
分类:
其他好文 时间:
2014-06-17 23:13:25
阅读次数:
291
快速幂运算在第一次训练时候就已经遇到过,这里不赘述
同余模运算也很简单,这里也不说了,无非是(a+b)%m (a*b)%m 把m弄到里面变成(a%m+b%m)%m (a%m*b%m)%m
今天学的最重要的还是递归二分求等比数列
题目大意是给出A和B,求A^B的约数和
解这个题,首先,对A进行素因子分解得到
(PI(pi^ai))^B
然后我们有约数和公式:
...
分类:
其他好文 时间:
2014-06-08 15:17:06
阅读次数:
257