欧拉定理以及欧拉降幂
大数幂运算 指数太大的时候 我们需要进行降幂操作
首先呢 认识欧拉定理之前 先了解一下欧拉函数 链接 欧拉函数
欧拉定理
我们将欧拉函数写作
欧拉定理就是 a n为正整数 且 a n 互质 那么 (mod n)
那么根据欧拉定理的式子 我们可以转化为 %n
1
那么既然 在mod n的情况下 恒等于 1
那么就得到了我们用来降幂的公式 (mod n)
扩展欧拉定理
扩展呢就是把互质推广到所有情况嘛
如果欧拉定理中的 a n不互质了 则有如下公式
降幂
如果a n互质 我们就根据欧拉定理降幂
(mod n)
如果不互质 我们就根据扩展欧拉定理降幂
我们在求 % n 的时候 可以通过判断
来转成上面的两个式子之一
就完成降幂了
练习题目的话
牛客寒假算法基础集训营4 E题
代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+7;
const int mod=1e9+7;
char a[maxn],b[maxn];
ll pow_mod(ll x,ll n){ll ans=1;x=x%mod;while(n!=0){if(n&1)ans=ans*x%mod;n>>=1;x=x*x%mod;}return ans;
}
int main(){//先通过欧拉函数 计算出mod 的欧拉函数是 1000000006 也就是mod-1scanf("%s%s",a,b);int l=strlen(a);ll n=0;for(int i=0;i<l;i++){n=(n*10+a[i]-'0')%(mod-1);//所以这里使用 mod-1 降幂}printf("%lld\n",pow_mod(2,n));return 0;
}
欧拉定理以及欧拉降幂相关推荐
- 数论学习六之——欧拉定理(欧拉降幂)
我们现在就来学习数论四大定理中的最后一个定理,欧拉定理. 首先我们先介绍一下什么是欧拉函数,欧拉函数 φ ( n ) \varphi(n) φ(n)求的是不超过n且与n互素的正整数的个数,例如: φ ...
- 欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)
目录 欧拉函数 欧拉定理 拓展欧拉定理(欧拉降幂) 欧拉函数 在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目. 它的通式如下: φ(n)=n*(1-1/p1)*(1-1/p2)*( ...
- 数学--数论--欧拉降幂--P5091 欧拉定理
题目背景 出题人也想写有趣的题面,可惜并没有能力. 题目描述 给你三个正整数,a,m,ba,m,ba,m,b,你需要求:ab mod ma^b \bmod mabmodm 输入格式 一行三个整数,a, ...
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
一般大佬会给你证明,而菜鸟会教你怎么使用. 先摆上公式: ab≡{abmodϕ(p)gcd(a,p)=1abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b ...
- 欧拉降幂和广义欧拉降幂
先百度贴个欧拉定理 由此可以得到降幂公式 第一个要求a和p互质,第二个和第三个是广义欧拉降幂,不要求a和p互质,但要求b和的大小关系. 那么有了这个公式先写个题目 bzoj3884 题意:求2^(2^ ...
- 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常
解题思路: 首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子: F(n)=15[(1+52)n−(1−52)n]F(n) = {1\over\sqrt5} ...
- 欧拉降幂及其扩展欧拉降幂
欧拉降幂: 从公式来看,需要使用快速幂运算和欧拉函数 #include<bits/stdc++.h>using namespace std; typedef __int64 LL;cons ...
- 欧拉降幂(Euler_Power_Formula)
一.欧拉降幂公式 二.证明 欧拉降幂公式与证明 三.例题 https://ac.nowcoder.com/acm/contest/330/E 四.参考文章 https://blog.csdn.net/ ...
- 2019ICPC(南京) - super_log(欧拉降幂)
题目链接:点击查看 题目大意:求(a^a^a^a....^a)%mod,其中有b个a 题目分析:一道数论题,被我们做成了模拟题..首先因为涉及到指数并且指数都还比较大,所以需要知道一个降幂公式: 我们 ...
- 数学--数论--广义欧拉降幂(模板)
未使用欧拉筛: 适用于较少次数计算的欧拉降幂. #include <bits/stdc++.h> #define ll long long using namespace std; ll ...
最新文章
- 强化学习常用算法+实际应用 ,必须get这些核心要点!
- R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关或者部分相关性系数并用建设检验检验相关性的显著性
- python3语法错误-【Python3之异常处理】
- IDEA运行第一个Spring Boot应用程序
- 一文看懂:BTS5210G 智能高侧电源开关
- 创建DLL、Lib以及使用DLL、Lib
- const参数,const返回值与const函数
- Android 系统(265)----Android进程保活全攻略(上)
- Vue 3 最新进展
- php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)
- 漫画:有趣的 “切蛋糕“ 问题
- gin-控制器分组:
- 传输线路动态巡检探索
- hspice linux 软件,Hspice 200803 linux安装(亲测可行)
- MATLAB-马尔可夫链(马氏链)模型
- pandas 学习task08文本数据
- Maven插件 [WARNING] 'parent.relativePath' of POM 类似警告处理
- Vision Transformer | CVPR 2022 - Beyond Fixation: Dynamic Window Visual Transformer
- 亲民地理35期-雨中登泰山
- 关于Docker以及安装方法
热门文章
- proxy_set_header的设置
- andrioid 图像视频处理
- github使用介绍
- this installer requires you to restart your system to finish installing Microsoft VC
- 在线思维导图工具-toolfk程序员在线工具网
- 美图个性化推荐的实践与探索
- Linux LVM的PV操作
- HackTheGame 攻略 - 第九关
- Microsoft SharePoint Server 2010 简体中文版及相关资源
- 安卓开发 给控件左边右边下边添加阴影_使用鸿蒙开发一款TV版的小游戏