题目链接

昨天考试考到了欧拉公式,结果发现自己不会,就来恶补一下。

欧拉公式

  • \(a^b \bmod p = a^{b}\) \(b < \varphi(p)\)
  • \(a^b \bmod p = a^{b\bmod \varphi(p) + \varphi(p)}\) $b \geq \varphi(p) $

具体证明的话可以看一下 扶咕咕的博客,我也是看他的博客才懂得QWQ。

在预处理的的时候,我们就可以判断一下 \(b\) 的大小,具体的话可以这么来实现

LL get(int p)
{
bool flag = 0;//flag 表示当前读入的这个数是否大于p
LL s = 0, w = 1; char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') w = -1; ch = getchar();}
while(ch >= '0' && ch <= '9')
{
s = s * 10 + ch - '0';
if(s >= p) flag = 1;s %= p;//如果大于p的话,就把flag变为1,同时在对p取模
ch = getchar();
}
if(flag) s += p;//根据欧拉定理如果指数大于p,则需要再加上一个p
return s * w;
}

处理一个数的欧拉函数可以在 \(\sqrt n\) 的时间内求出来,根据他的递推公式 \(\displaystyle\varphi(n) = n \prod_{质数p\mid n}(1-{1\over p})\) 求一下就行

代码

LL Euler(LL n)
{
LL res = n;
for(int i = 2; i <= sqrt(n); i++)//枚举他的约数
{
if(n % i == 0)
{
res = res / i * (i-1);//递推公式
while(n % i == 0) n /= i;//这个质因子除尽
}
}
if(n > 1) res = res / n * (n-1);//最后剩下的质因子可能会大于 n,比如 6 = 2 * 3,这时候再把这个质因子算上就行
return res;
}

AC代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define LL long long
LL a,m,b,p;
LL get(int p)
{
bool flag = 0;
LL s = 0, w = 1; char ch = getchar();
while(ch < '0' || ch > '9'){if(ch == '-') w = -1; ch = getchar();}
while(ch >= '0' && ch <= '9')
{
s = s * 10 + ch - '0';
if(s >= p)
{
flag = 1;
s %= p;
}
ch = getchar();
}
if(flag) s += p;
return s * w;
}
LL ksm(LL a,LL b,LL p)
{
LL res = 1;
for(; b; b >>= 1)
{
if(b & 1) res = res * a % p;
a = a * a % p;
}
return res;
}
LL Euler(LL n)
{
LL res = n;
for(int i = 2; i <= sqrt(n); i++)
{
if(n % i == 0)
{
res = res / i * (i-1);
while(n % i == 0) n /= i;
}
}
if(n > 1) res = res / n * (n-1);
return res;
}
int main()
{
scanf("%lld%lld",&a,&m); p = Euler(m); b = get(p);
printf("%lld\n",ksm(a,b,m) % m);
return 0;
}

P5091 【模板】扩展欧拉定理的更多相关文章

  1. P5091 【模板】欧拉定理(欧拉降幂)

    P5091 [模板]欧拉定理 以上3张图是从这篇 博客 里盗的,讲的比较清楚. #include<bits/stdc++.h> using namespace std; typedef l ...

  2. P5091 【模板】欧拉定理

    思路 欧拉定理 当a与m互质时 \[ a^ {\phi (m)} \equiv 1 \ \ (mod\ m) \] 扩展欧拉定理 当a与m不互质且\(b\ge \phi(m)\)时, \[ a^b \ ...

  3. 题解 P5091 【【模板】欧拉定理】

    欧拉定理:若 \(gcd(a,n)=1\),\(a^{\varphi(n)}\equiv 1(mod\ n)\) 设 \(1\sim n-1\) 中与 \(n\) 互素的 \(\varphi(n)\) ...

  4. [洛谷P5091]【模板】欧拉定理

    题目大意:求$a^b\bmod m(a\leqslant10^9,m\leqslant10^6,b\leqslant10^{2\times10^7})$ 题解:扩展欧拉定理:$$a^b\equiv\b ...

  5. [luogu4139]上帝与集合的正确用法【欧拉定理+扩展欧拉定理】

    题目大意 让你求\(2^{2^{2^{\cdots}}}(mod)P\)的值. 前置知识 知识1:无限次幂怎么解决 让我们先来看一道全国数学竞赛的一道水题: 让你求解:\(x^{x^{x^{\cdot ...

  6. 题解报告:hdu 4704 Sum(扩展欧拉定理)

    Problem Description Sample Input 2 Sample Output 2 Hint 1. For N = 2, S(1) = S(2) = 1. 2. The input ...

  7. VS自定义项目模板:[2]创建VSIX项目模板扩展

    VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...

  8. BZOJ.3884.上帝与集合的正确用法(扩展欧拉定理)

    \(Description\) 给定p, \(Solution\) 欧拉定理:\(若(a,p)=1\),则\(a^b\equiv a^{b\%\varphi(p)}(mod\ p)\). 扩展欧拉定理 ...

  9. SHOI 2017 相逢是问候(扩展欧拉定理+线段树)

    题意 https://loj.ac/problem/2142 思路 一个数如果要作为指数,那么它不能直接对模数取模,这是常识: 诸如 \(c^{c^{c^{c..}}}\) 的函数递增飞快,不是高精度 ...

  10. bzoj3884: 上帝与集合的正确用法 扩展欧拉定理

    题意:求\(2^{2^{2^{2^{...}}}}\%p\) 题解:可以发现用扩展欧拉定理不需要很多次就能使模数变成1,后面的就不用算了 \(a^b\%c=a^{b\%\phi c} gcd(b,c) ...

随机推荐

  1. windows版redis报错:本地计算机上的Redis服务启动后停止

    解决 1.如果需要临时启动Redis 使用命令:redis-server.exe   redis.windows.conf   --maxheap 200m 说明:200m是指定最大堆内存是200m, ...

  2. Selenium使用cookis登录,并临时将cookis存储在本地【shelve数据库】

    Python中自带了一个shelve库,可以帮助我们存储一些少量的数据. shelve数据库类似redis,是以[键值对]的方式进行数据的存储,有点像"字典"这种数据结构,存储在本 ...

  3. 为什么建议软件测试自学而不推荐去IT培训机构?浅谈IT培训机构存在的意义

    原文地址:https://www.jianshu.com/p/447c65654e84 哥们别太天真啦,知乎上那些到处以大神自居,说培训机构各种神坑不靠谱的,绝对是无利不起早的,很多都是借着贬低别人来 ...

  4. Mysql性能参数优化

    1.Max_connections (1)简介 Mysql的最大连接数,如果服务器的并发请求量比较大,可以调高这个值,当然这是要建立在机器能够支撑的情况下,因为如果连接数越来越多,mysql会为每个连 ...

  5. Mac 的命令行配置字体颜色

    1.在mac命令行终端输入: ls -al  查看所有隐藏文件,找到.bash_profile vi .bash_profile  编辑文件,贴入以下内容并保存 source .bash_profil ...

  6. 360浏览器最小字号12的坑 -彻底搞清rem

    之前做响应式网站,使用rem作为单位.因为浏览器的默认字号是16px,设置html {font-size: 62.5%; /*10 ÷ 16 × 100% = 62.5%*/},刚好1rem =10p ...

  7. W5300中文手册

    如果链接没了就Q我吧1178875532 链接:https://pan.baidu.com/s/1HcNJN_T6QJCvPWymU1sFDQ 提取码:suBB

  8. django之admin配置

    要在admin内显示的表,在admin中进行注册,然后在登录admin后台,才可以对表进行操作例如:from django.contrib import adminfrom app01 import ...

  9. 大写的服,看完这篇你还不懂RocketMQ算我输

    目录 RocketMQ介绍 RocketMQ概念 为什么要用RocketMQ? 异步解耦 削峰填谷 分布式事务最终一致性 数据分发 RocketMQ架构 RocketMQ消息类型 普通消息 顺序消息 ...

  10. [剑指Offer]18-题目一:删除链表的节点 题目二:删除链表中重复节点

    题目一 题目 O(1)时间复杂度删除给定链表节点. 题解 用待删除节点后一个节点的值覆盖待删除节点值,更新链接关系. 注意链表只有一个节点:删除尾结点:删除头节点的处理. 代码 class ListN ...