快速幂和快速乘 1. 算法分析 1.1 快速幂 计算a ^ k % p 把k拆成二进制表示形式,比如k等于5的时候,k = (101)2 = c1 * 1 + c2 * 0 + c3 * 1 预处理a ^ c1, a ^ c2, ..., a ^ ct 这样计算ak%p时,答案即为res = (ac ...
分类:
其他好文 时间:
2020-06-07 14:36:24
阅读次数:
54
计算乘法很简单,但是如果数据规模过大就会超时了,所以就有了快速幂这个算法。 原理: 如果b是奇数,就有ab=a * a(b-1) 如果b是偶数,就有ab=a(b/2) *a^(b/2) 举个例子 2^4 24 = 22 * 22 22 = 21 * 21 21 = 2 = 20 2^0 = 1 (例 ...
分类:
其他好文 时间:
2020-06-06 12:56:06
阅读次数:
55
小结 解决的问题: 解决递推关系中不好直接写出通项公式的问题,将多个递推关系的系数在矩阵中表示 而对于矩阵的幂运算可以用快速幂,复杂度:O(m^3*logn) 所以算法核心就是找到递推关系对应的矩阵辣 POJ 3420 Quad Tiling 题意:在一个4*n的棋盘上,用1*2的多米诺骨牌来平铺, ...
分类:
其他好文 时间:
2020-05-31 10:58:02
阅读次数:
68
题解: t1: 代码: #include <cstdio> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); printf("%d",a+b+c); return 0; } 典型的入门问题a+b problem的一点拓展. 看到fi=a*f_{i-1} ...
分类:
其他好文 时间:
2020-05-30 18:21:53
阅读次数:
47
原题点这里 求一个数的幂。我们看一下数据范围。很容易就想到Math.pow() public static double myPow(double x, int n) { return Math.pow(x,n); } View Code 哈哈,其实这样有投机的成分。正经的解法:快速幂 我们以 x^ ...
分类:
其他好文 时间:
2020-05-27 10:37:59
阅读次数:
78
题目: 思路: 1、最简单直观的方法就是循环相乘,但是会超时 2、快速幂(二进制角度) 对于任意十进制n,设其二进制为$b_m$...\(b_2b_1\),则有 \(n=1b_1 + 2b_2 + ... + 2^{m-1}b_m\) \(x^n = x^{1b_1 + 2b_2 + ... + 2 ...
分类:
其他好文 时间:
2020-05-26 18:05:48
阅读次数:
45
先贴个整数快速幂 #include<bits/stdc++.h> using namespace std; typedef long long int ll; ll b,p,k,ans=1,res; int main(){ scanf("%lld%lld%lld",&b,&p,&k); cout<< ...
分类:
其他好文 时间:
2020-05-24 00:46:48
阅读次数:
56
A - Candies 1.题意 给定一个正整数n,求一个正整数x使得x + 2 * x + 4 * x + ······ + 2 ^ (k - 1) * x = n(k > 1)。 2.题解 用等比数列的求和公式化简为 (2 ^ k - 1)* x = n,乘方可以用快速幂,再从2开始枚举k即可。 ...
分类:
其他好文 时间:
2020-05-23 18:45:00
阅读次数:
53
Describe 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方 ...
分类:
其他好文 时间:
2020-05-18 18:49:16
阅读次数:
57
题目 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的路线去教室, 但是由于时间问题, 每次只能经过k个地方, 比方说, 这次葱头决定经过2个地方, 那他可以 ...
分类:
其他好文 时间:
2020-05-18 18:13:46
阅读次数:
55