首页 > TAG信息列表 > qpow

多项式全(?)家桶

贴个板子,以备复习 点击查看代码 #include<cstdio> #include<cstdlib> #include<algorithm> #include<unordered_map> #include<cmath> #define mod 998244353 #define maxn 400010 #define ll long long #define it unordered_map<ll,int>::iterator

多校联训12

rank 56 grade 146 T1:水题二分 T2:数论 T2:定义f(f(f(f(x)))).....是f(x)迭代n次的结果,f(x)=(x+1/x)/2.给出多组n,x,求f(x)这样迭代n-1的结果。(n<=1e18,x<=1e18) x= \(\frac{a}{b}\) ,原式可以化为\(\frac{a^{2}+b^{2}}{2*ab}\),假设f2(x)=a2/b2,发现a2+b2=\((a+b)^{2}\),a2-b2=\((

LeetCode刷题随记

LeetCode刷题随记 快速幂 快速幂讲解:快速幂 递归: //递归快速幂(对大素数取模) #define MOD 1000000007 typedef long long ll; ll qpow(ll a, ll n) { if (n == 0) //是0返回1 return 1; else if (n % 2 == 1) //是奇数,返回a的n-1*a return qpow(a,

快速幂

分为递归快速幂和非递归快速幂两种。 它可以以的时间复杂度计算乘方。 递归快速幂      程序 int qpow(int a, int n) { if (n == 0) return 1; else if (n % 2 == 1) return qpow(a, n - 1) * a; else { int temp = qpow(a, n / 2);

E - LEQ(树状数组)

E - LEQ 题意:给一个数组,找出有多少子序列 满足a1<ak 思路:易知,对于一对数 ai<aj 子序列的数量为2(j-i-1) 即 2j-1/2i 若ai<aj<ak, ak的贡献为 2k-1(1/2i+1/2j) 则可以用树状数组维护比ak小的 (1/2i+1/2j+…………)的和 。 之后离散化一下就行了。 #pragma GCC optimize(2) #p

题解 P3197 【[HNOI2008]越狱】

P3197 [HNOI2008]越狱 题目大意: 有 \(n\) 个点 \(m\) 种颜色,每个点都有一个颜色,问有相邻的点颜色相同的方案数。 solution: 直接计算比较麻烦,考虑容斥: 首先我们可以计算出所有可能性:第一个点有 \(m\) 种选择,第二个点也有 \(m\) 种选择,根据乘法原理,同理可得共有 \(m^n\) 种方案。 然

Codeforces Round #737 (Div. 2) A~E 题解

本场链接:Codeforces Round #737 (Div. 2) 闲话 做的时候把C的条件转错了白做一个多小时.最后E由于假了所以就不写了,有兴趣自己补吧. A. Ezzat and Two Subsequences 考虑平均值:最大值所在的组,会因为放入别的数而变小.每个数都需要在一个组,不难想到使最大值单独成一个组即可.

剑指 Offer 16. 数值的整数次方

快速幂。 class Solution { public: double qpow(double x, long long n) { double res = 1; while (n) { if (n & 1) res *= x; x = x * x; n >>= 1; } return res; } double myPow

P3747 [六省联考 2017] 相逢是问候

【题意】区间内ai修改为c^ai(c为给定的固定数),区间求和 【分析】这道题目需要用到一个扩展欧拉定理,我们发现我们实际上在不断的对幂进行取phi的操作,所以这个数量级降的也是十分快,可以先算出最多经历的次数t对于一个修改操作,如果这个区间的修改次数都多余t了,就不用在进行操作了,否则暴

P3807 卢卡斯定理(模板)

传送门 给定整数 n, m, p 的值,求出 C((m+n),n) mod p 的值。 输入数据保证 p 为质数。 注: C 表示组合数。   AC代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 10000005; const int inf = 0x3f3f3f3f; const int mod

[CF1493D] GCD of an Array - 数论,map,set

[CF1493D] GCD of an Array - 数论,map,set Description 一个长度为 \(n\) 的序列 \(a\)。\(m\) 次操作,每次操作你要将 \(a_x\) 乘 \(y\),然后输出 \(\gcd(a_1,\cdots,a_n)\bmod (10^9+7)\)。\(1\le n,m\le 2\times 10^5\),\(1\le a_i,y\le 2\times 10^5\),\(1\le x\le n\)

牛客寒假算法基础训练营6 F.组合数问题

传送门 思路:Cn0+Cn1+Cn2+…=2 ^ n=(1+1)^n Cn0-Cn1+Cn2+…=(1-1)^n 将上面两式相加 得到Cn0+Cn2+…=2^n-1 且 从而得出答案 #include<bits/stdc++.h> using namespace std; #define ll long long const int mod = 998244353; ll qpow(ll a,ll b) { ll ans = a%mod; ll s

组合数问题 题解(虚数)

题目链接 题目大意 计算\(C_n^0+C_n^4+C_n^8+......C_n^n (n \mod 4=0 ;1\leq n \leq 1e18)\) 题目思路 如果是计算\(C_n^0+C_n^2+C_n^4+......C_n^n\) 显然 \((1+1)^n=C_n^0+C_n^1+C_n^2+......C_n^n\) \((1-1)^n=C_n^0-C_n^1+C_n^2+......C_n^n\) 两式相加 \(C_n^0+C_n^2+C_n^4+

[CF1097D] Makoto and a Blackboard - dp,质因数分解

[CF1097D] Makoto and a Blackboard - dp,质因数分解 Description 给定 n,k,一共有 k 次操作,每次会把 n 等概率变成 n 的某个约数。求操作 k 次后 n 的期望是多少。 Solution 设 \(h[i][j]\) 表示 \(n=i, k=j\) 的结果 每个质因子的贡献实际上是独立的,反应在次数上就是相乘的关系

快速幂

1 #include<iostream> 2 #include<cstdio> 3 using namespace std; 4 5 int a,b,p; 6 7 int qpow(int x,int y){ 8 int res=1; 9 for(;y;y>>=1,a=a*a%p) if(b&1) res=res*a%p; 10 return res%p;//这里mod p严谨一些,为了防p=1的情况 11 } 1

牛客挑战赛45 E 旁观者

构造一个\(n\)个点,\(m\)条边的仙人掌,使得随机删\(k\)个点之后期望的连通块个数尽量大。 输出这个最大的期望的连通块数。 \(n,m,k\le 10^9\) 神仙题。 我的1h<dyp的3分钟 考虑正难则反,最终\(连通块数=点数-边数+环数\)。 点数和边数可以算,于是我们希望最大化最终剩下的期望环数。

题解 CF504E 【Misha and LCP on Tree】

PullShit 倍增和树剖的差距!!! 一个 TLE, 一个 luogu 最优解第三!!! 放个对比图(上面倍增,下面轻重链剖分): 不过这是两只 log 非正解。。。 Solution \(LCP\), 自然地想到后缀字符串算法和哈希。后缀自动机好像搞不了,用哈希。 正解是把路径拆分成链,不过这里给出一个更自然的 二分 + 哈希

计算系数

给定一个多项式(ax+by)^k,请求出多项式展开后x^ny^m项的系数。     输入格式 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。 输出格式 输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。 数据范围 0≤n,m≤k≤1000 n+m=k, 0

LeetCode 372. 超级次方(快速幂)

1. 题目 你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。 示例 1: 输入: a = 2, b = [3] 输出: 8 示例 2: 输入: a = 2, b = [1,0] 输出: 1024 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/super-pow 著作权归领扣

【模板】多项式开根(加强版)

#include <bits/stdc++.h> using namespace std; #define int long long const int N = 262150; const int mod = 998244353; int qpow(int p,int q) {return (q&1?p:1)*(q?qpow(p*p%mod,q/2):1)%mod;} int inv(int p) {return qpow(p,mod-2);} namespace cipolla

AtCoder Grand Contest 038E - Gachapon

\(\bf Description\) 一个 \(0\) 到 \(n-1\) 的随机数生成器,生成 \(i\) 的概率是 \(A_i/S\) ,其中 \(S=\sum_{i=0}^{n} A_i\) ,请你求出每个数出现次数 \(\geq B_i\) 的期望次数。 \(\bf Solution\) 什么生成函数爆推的做法一点不会啊…… min-max容斥,考虑每个集合最早出现出现次数

Codeforces Round #589 (Div. 2)E(组合数,容斥原理,更高复杂度做法为DP)

#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;int f[257],fac[257],ifac[257];const long long mod = 1e9+7;int qpow(int x,int y){ int tamp=1; while(y){ if(y&1) tamp=1ll*tamp*x%mod; x=1ll*x*x%m

[一本通学习笔记] 快速幂

好无聊啊 10193. 「一本通 6.1 例 1」序列的第 k 个数 #include <bits/stdc++.h> using namespace std; #define int long long const int modulo = 200907; int qpow(int p, int q) { int r = 1; for (; q; (p *= p) %= modulo, q >>= 1) if (q & 1)

P3306 [SDOI2013]随机数生成器

思路:\(BSGS\) 提交:\(1\)次 题解: 原式可以化为\[x_{i+1}+\frac{b}{a-1}=a(x_{i}+\frac{b}{a-1})\mod p\] 这不是等比数列吗? \[x_{n}+\frac{b}{a-1}=a^{n-1}\cdot (x_{1}+\frac{b}{a-1})\mod p\] 所以有 \[a^{n-1}=(x_{1}+\frac{b}{a-1})^{-1}\cdot (x_{n}+\frac{b}{a-1})\mod p

[HNOI2008] 越狱 快速幂

[HNOI2008] 越狱 快速幂 水。考虑不发生越狱的情况:即宗教相同的都不相邻,一号任意放\(m\)种宗教的人,此后\(n-1\)个房间都放与上一个宗教不同的人,有\(m-1\)种,所以共有\(m*(m-1)^{n-1}\)种。答案即\(m^n-m*(m-1)^{n-1}\)。快速幂即可。 注意,这里需要考虑模后相减为负的情况,此时将负值