欧拉定理、欧拉函数、a/b%c
怕忘了……
欧拉函数 定义、证明、打表方法
欧拉定理 定义、证明
https://blog.csdn.net/zzkksunboy/article/details/73061013
剩余系、完系、简系
证明相当精彩!

而1~a*b中关于a*b的每个系有且仅有一个。
勿忘:积性函数指对于所有互质的整数a和b有性质f(ab)=f(a)f(b)的数论函数。
====================================================================
https://blog.csdn.net/u014074562/article/details/50990326
a^b%c
在b非常大时的情况,
[前提 (a,c)=1]
因为a^phi(c)%c = 1
a^b%c=a^(b%phi(c))%c
c为素数时,phi(c)=c-1。
[无前提]
b>=phi(c)时,a^b%c=a^(b%phi(c)+phi(c))%c
b<phi(c)时,a^b%c=a^(b%phi(c))%c (前面的定理不一定正确)
证明:
https://www.luogu.org/problemnew/solution/P5091
例子:
a=d c=d^e b=d^f e>f
如a=2 b=1024 c=2
P5091 【模板】欧拉定理
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long const double eps=1e-;
const ll inf=1e9;
const ll mod=1e9+;
const int maxn=1e6+;
//const int maxlen=2e7+10; int phi[maxn],zhi[maxn],cnt_zhi;
bool vis[maxn];
int maxv=1e6;
//char str[maxn]; ll mul(ll a,ll b,ll m)
{
ll y=;
while (b)
{
if (b&)
y=y*a%m;
a=a*a%m;
b>>=;
}
return y;
} int main()
{
///互质:它们的公因数只有1
///i=1~m的phi(i) 顺便求出 bool use=;
int i,j,k,a,b,m;
char c;
phi[]=;///
for (i=;i<=maxv;i++)
{
if (!vis[i])
{
zhi[++cnt_zhi]=i;
phi[i]=i-;
}
for (j=;j<=cnt_zhi;j++)
{
k=i*zhi[j];
if (k>maxv)
break;
vis[k]=;
if (i%zhi[j]==)
{
phi[k]=phi[i]*zhi[j];
break;
}
else
phi[k]=phi[i]*(zhi[j]-);
}
} scanf("%d%d ",&a,&m);
b=;
while ((c=getchar())!=EOF)
{
if (!(c>= && c<=))
break; b=b*+c-;
if (b>=phi[m])
use=;
b=b%phi[m];
// b=(b*10+c-48)%phi[m];
} if (use)
printf("%lld",mul(a,b+phi[m],m));
else
printf("%lld",mul(a,b,m));
return ;
}
/*
2 12 8
2 5 3
*/
Advanced:
学习 快速幂&龟速乘&快速乘
https://blog.csdn.net/Cyan_rose/article/details/83065026
------------------------------------
a/b%c
b,c互质
则a/b 与 a^[phi(c)-1] 模c的结果是一致的 [a^phi(c) mod c = 1]
a/b%c=a^[phi(c)-1]%c
对于任意情况:
针对的a是特别大,b、c较小的情况
a/b%c=(a%bc)/b
证明:把a设为bc*x + b*y +z的形式 (x尽量大,然后是y尽量大,x,y,z>=0)
=============================
最后推荐:
https://www.cnblogs.com/zwfymqz/p/6740325.html
一些数论题目的模板
欧拉定理、欧拉函数、a/b%c的更多相关文章
- 2^x mod n = 1(欧拉定理,欧拉函数,快速幂乘)
2^x mod n = 1 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- HDU4549 M斐波那契数列 矩阵快速幂+欧拉函数+欧拉定理
M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Sub ...
- 数论的欧拉定理证明 & 欧拉函数公式(转载)
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) . 完全余数集合:定义小于 n 且和 n 互质的数 ...
- BZOJ3884: 上帝与集合的正确用法(欧拉函数 扩展欧拉定理)
Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 3860 Solved: 1751[Submit][Status][Discuss] Descripti ...
- XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】
1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS Memory Limit: 128 MBSubmit: 45 Solved: 8[Submit][Status][W ...
- 欧拉函数&&欧拉定理
定义和简单性质 欧拉函数在OI中是个非常重要的东西,不知道的话会吃大亏的. 欧拉函数用希腊字母φ表示,φ(N)表示N的欧拉函数. 对φ(N)的值,我们可以通俗地理解为小于N且与N互质的数的个数(包含1 ...
- [洛谷P5106]dkw的lcm:欧拉函数+容斥原理+扩展欧拉定理
分析 考虑使用欧拉函数的计算公式化简原式,因为有: \[lcm(i_1,i_2,...,i_k)=p_1^{q_{1\ max}} \times p_2^{q_{2\ max}} \times ... ...
- 欧拉函数&欧拉定理&降幂 总结
欧拉函数&欧拉定理&降幂 总结 标签:数学方法--数论 阅读体验:https://zybuluo.com/Junlier/note/1300214 这年头不总结一下是真的容易忘,老了老 ...
- 数学基础IV 欧拉函数 Miller Rabin Pollard's rho 欧拉定理 行列式
找了一些曾经没提到的算法.这应该是数学基础系最后一篇. 曾经的文章: 数学基础I 莫比乌斯反演I 莫比乌斯反演II 数学基础II 生成函数 数学基础III 博弈论 容斥原理(hidden) 线性基(h ...
随机推荐
- LeetCode Array Easy 119. Pascal's Triangle II
Description Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's tria ...
- maven管理多模块
创建parent项目: 1.打开IDEA,注意这里不要勾选模板,用模板创建过maven项目的小伙伴都知道模板创建项目非常慢,所以这里不要选模板,需要的文件夹我们后面自己来创建就可以了.所以这个页面直接 ...
- Linux面试基础(一)
Linux基本命令 man rm 查看命令帮助 tar cf 压缩文件 tar xf 解压缩 ping 查看是否能连接网络 rm 删除数据 find 搜索数 ...
- shell script 二 判断符号【】 shift 偏移量 if then fi
判断符号[]类似于test.但是[]有通配符及正则表达式,为了区分,利用[]来做判断时,前后都需要加空格来区分.又一个坑 [ -z "$HOME" ];echo $? 例: 1 r ...
- 一、基础项目构建,引入web模块,完成一个简单的RESTful API
一.Spring Boot的主要优点: 为所有Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化Web项目 没有冗余代码生成和XML配置的要求 二.使用maven构 ...
- nodejs 进阶:封装所有对数据库的常用操作
//这个模块里面封装了所有对数据库的常用操作 var MongoClient = require('mongodb').MongoClient; var settings = require(&quo ...
- 36.两个链表的第一个公共结点(python)
题目描述 输入两个链表,找出它们的第一个公共结点. class Solution: def FindFirstCommonNode(self, pHead1, pHead2): # write cod ...
- js中获取basePath
单独js文件中el不能获取,通过以下方式获取1 var location = (window.location+'').split('/'); var basePath = location[0]+' ...
- Java——异常的基本概念
1.异常的基本概念 1.1什么是异常 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格 ...
- PHP FILTER_SANITIZE_STRIPPED 过滤器
定义和用法 FILTER_SANITIZE_STRIPPED 过滤器去除或编码不需要的字符. 该过滤器是 FILTER_SANITIZE_STRING 过滤器的别名 该过滤器删除那些对应用程序有潜在危 ...