首页 > 其他分享 >欧拉降幂

欧拉降幂

时间:2022-10-25 12:39:52浏览次数:42  
标签:降幂 int ll while ans 欧拉 mod


放一张看烂的图

欧拉降幂_i++


欧拉降幂就是第一个和第三个公式了,第二种情况直接快速幂算

与模数互质时,

与模数不互质时,,这也就是广义欧拉定理

适用于幂次很大时,可以有效降低复杂度

在一些题中会出到无法用整型存下的范围,比如

这就必须用欧拉降幂了,边读入边处理

而且快速幂中的乘法可能会爆,有时要快速乘

模板

#include <bits/stdc++.h>
#define

using namespace std;
typedef long long ll;
ll a, mod; char s[A];
ll Euler(ll n) {
ll ans = n;
for (int i = 2; i * i <= n; i++)
if (n % i == 0) {
ans = ans / i * (i - 1);
while (n % i == 0) n /= i;
}
if (n > 1) ans = ans / n * (n - 1);
return ans;
}
ll fpow(ll a, ll b, ll ans = 1) {
while (b) {
if (b & 1) ans = ans * a % mod;
a = a * a % mod; b >>= 1;
}
return ans;
}

int main(int argc, char const *argv[]) {
while (scanf("%lld%s%lld", &a, s, &mod)) {
int len = strlen(s); ll e = Euler(mod), ans = 0;
for (int i = 0; i < len; i++) ans = (ans * 10 + s[i] - '0') % e;
ans += e; printf("%lld\n", fpow(a, ans));
}
return 0;
}


标签:降幂,int,ll,while,ans,欧拉,mod
From: https://blog.51cto.com/lyle/5794466

相关文章

  • 欧拉函数积性性的证明
    若互质,则由互质可知无公因数,其中为的质因数,为的质因数,而无公因数所以互不相同,所以均为的质因数且为质因数的全集所以所以......
  • 欧拉定理相关性质及证明
    欧拉定理:当与互质时,有通项公式及其证明:如果,为质数,则证明:当一个数不包含质因子时就能与互质,小于等于的数中包含质因子p的只有个,即,把他们去除即可由唯一分解定理可知,这就是......
  • BZOJ 2190([SDOI2008]仪仗队-O(n)线性筛欧拉函数)
    2190:[SDOI2008]仪仗队TimeLimit: 10Sec  MemoryLimit: 259MBSubmit: 521  Solved: 331[​​Submit​​][​​Status​​][​​Discuss​​]Descri......
  • 欧拉函数(互质)
    定义:欧拉函数是指:一个数N,在1~N这个范围内,与N互质的数的“个数”记作\(\phi\)(N)互质是指gcd(i,N)=1因为一个数总能被分解为:N=P\(_{1}\)\(^{a1}\)*P\(_{2}\)\(^{......
  • BZOJ 4805(欧拉函数求和-杜教筛)
    Description给出一个数字N,求sigma(phi(i)),1<=i<=NInput正整数N。N<=2*10^9Output输出答案。SampleInput10SampleOutput32HINT杜教筛入门#include<bits/stdc++......
  • 欧拉图相关
    判定无向图欧拉路径:仅仅存在两个点度数为奇数,其余为偶数无向图欧拉回路:度数均为偶数图应该是连通的。有向图欧拉路径:存在两个点入度出度满足1/-1的增量,其余......
  • 欧拉函数
    欧拉函数的几个性质及证明定义\(\varphi(n)\)表示在\(1\)~\(n\)中与\(n\)互质的数计算式及计算方法若n根据算术基本定理分解为\(n=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\)......
  • 欧拉路径与Hierholzer算法
    欧拉路径:如果图G中的一个路径包括每个边恰好一次,则该路径称为欧拉路径(Eulerpath)。欧拉回路:如果一个回路是欧拉路径,则称为欧拉回路(Eulercircuit)。具有欧拉回路的图......
  • 欧拉函数
    P2158[SDOI2008]仪仗队#include<cstdio>#include<iostream>#include<algorithm>#defineilinline#defineriregister#definepc(i)putchar(i)usingnamespace......
  • 欧拉函数
    \[n=\displaystyle\sum_{d\midn}\varphi(d)\]证明:\[\foralln\in\mathbb{N}_+,f(x)=\displaystyle\sum_{i=1}^n[\gcd(i,n)=x]\]\[\because\gcd(i,n)......