数学知识-欧拉函数&快速幂
欧拉函数
定义
对于正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目,记作φ(n).
算法思路
既然求解每个数的欧拉函数,都需要知道他的质因子,而不需要个数
因此,我们只需求出他的质因子,然后根据公式:N*(p1-1)/p1*(p2-1)/p2......即可
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- ll n;
- int main()
- {
- ll i,j;
- cin>>n;
- for(i=0;i<n;i++)
- {
- ll x;
- cin>>x;
- ll ans=x;
- for(j=2;j<=x/j;j++)
- {
- if(x%j==0)
- {
- ans=ans*(j-1)/j;
- while(x%j==0)
- {
- x/=j;
- }
- }
- }
- if(x!=1)
- ans=ans*(x-1)/x;
- cout<<ans<<endl;
- }
- return 0;
- }
筛法求欧拉函数
问题
给定一个正整数n,求1~n中每个数的欧拉函数之和。
算法思路
使用线性筛的方法,来求每个数的欧拉函数
- #include<bits/stdc++.h>
- using namespace std;
- const int N=1e6+10;
- int n,cnt;
- bool st[N];
- int primes[N];
- int phi[N];
- void get_eulers()
- {
- int i,j;
- phi[1]=1;
- for(i=2;i<=n;i++)
- {
- if(!st[i])
- {
- primes[cnt++]=i;
- phi[i]=i-1;
- for(j=0;primes[j]<=n/i;j++)
- {
- st[primes[j]*i]=true;
- if(i%primes[j]==0)
- phi[primes[j]*i]=primes[j]*phi[i];
- else
- phi[primes[j]*i]=(primes[j]-1)*phi[i];
- }
- }
- }
- int ans=0;
- for(i=1;i<=n;i++)
- ans+=phi[i];
- cout<<ans<<endl;
- }
- int main()
- {
- int i,j;
- cin>>n;
- get_eulers();
- return 0;
- }
快速幂
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- void suppow(ll a,ll b,ll p)
- {
- ll ans=1;
- while(b)
- {
- if(b&1)
- ans=(ans*a)%p;
- a=(a*a)%p;
- b>>=1;
- }
- cout<<ans%p<<endl;
- }
- int main()
- {
- ll n,a,b,p;
- cin>>n;
- while(n--)
- {
- cin>>a>>b>>p;
- suppow(a,b,p);
- }
- return 0;
- }
快速幂求逆元
前提
代码
快速幂求解:
- #include<bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int maxn=1e5+10;
- ll supow(ll a,ll b,ll p)
- {
- ll ans=1;
- while(b)
- {
- if(b&1)
- ans=ans*a%p;
- a=a*a%p;
- b>>=1;
- }
- return ans;
- }
- int main()
- {
- ll a,p,n;
- cin>>n;
- while(n--)
- {
- cin>>a>>p;
- if(a%p!=0)
- {
- cout<<supow(a,p-2,p)<<endl;
- }
- else
- puts("impossible");
- }
- return 0;
- }
扩展欧几里得求逆元
- #include <iostream>
- using namespace std;
- typedef long long LL;
- int n;
- int exgcd(int a, int b, int &x, int &y)
- {
- if (!b) {
- x = 1, y = 0;
- return a;
- }
- int d = exgcd(b, a % b, y, x);
- y -= a / b * x;
- return d;
- }
- int main()
- {
- cin >> n;
- while (n --)
- {
- int a, p, x, y;
- // if (a < p) swap(a, p);
- cin >> a >> p;
- int d = exgcd(a, p, x, y);
- if (d == 1) cout << ((LL)x + p) % p << endl;//保证x是正数
- else puts("impossible");
- }
- return 0;
- }
数学知识-欧拉函数&快速幂的更多相关文章
- hdu 3307 Description has only two Sentences (欧拉函数+快速幂)
Description has only two SentencesTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】
1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS Memory Limit: 128 MBSubmit: 45 Solved: 8[Submit][Status][W ...
- 牛客训练:小a与黄金街道(欧拉函数+快速幂)
题目链接:传送门 思路:欧拉函数的性质:前n个数的欧拉函数之和为φ(n)*n/2,由此求出结果. 参考文章:传送门 #include<iostream> #include<cmath ...
- Exponial (欧拉定理+指数循环定理+欧拉函数+快速幂)
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=2021 Description Everybody loves big numbers ...
- 小a与黄金街道(欧拉函数+快速幂)
链接:https://ac.nowcoder.com/acm/contest/317/D 来源:牛客网 题目描述 小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们 ...
- 【BZOJ 1409】 Password 数论(扩展欧拉+矩阵快速幂+快速幂)
读了一下题就会很愉快的发现,这个数列是关于p的幂次的斐波那契数列,很愉快,然后就很愉快的发现可以矩阵快速幂一波,然后再一看数据范围就......然后由于上帝与集合对我的正确启示,我就发现这个东西可以用 ...
- CF思维联系– CodeForces -CodeForces - 992C Nastya and a Wardrobe(欧拉降幂+快速幂)
Nastya received a gift on New Year - a magic wardrobe. It is magic because in the end of each month ...
- UVaLive 7362 Farey (数学,欧拉函数)
题意:给定一个数 n,问你0<= a <=n, 0 <= b <= n,有多少个不同的最简分数. 析:这是一个欧拉函数题,由于当时背不过模板,又不让看书,我就暴力了一下,竟然A ...
- 数学之欧拉函数 &几道poj欧拉题
欧拉函数总结+证明 欧拉函数总结2 POJ 1284 原根 #include<iostream> #include<cstdio> #include<cstring> ...
随机推荐
- URL重定向 - Pikachu
概述: 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方.如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能 ...
- [Usaco2007 Dec]宝石手镯
题目描述 贝茜在珠宝店闲逛时,买到了一个中意的手镯.很自然地,她想从她收集的 N(1 <= N <= 3,402)块宝石中选出最好的那些镶在手镯上.对于第i块宝石,它的重量为W_i(1 & ...
- HTML基础复习1
网页:HTML(超文本标记语言) 网页分为静态网页和动态网页,区别:动态网页中可以加入脚本代码,还可以动态的引入数据库中的信息. HTML的结构 <html> <head>头信 ...
- Nginx架构赏析
淘宝的某位大佬曾经做过测试,在一台24G内存的机器上,Nginx的最大并发连接数达到了200万.同学们听到这个结论后,是不是被Nginx的超高性能深深折服了,它内部的架构设计究竟是怎么样的呢?这篇文章 ...
- uni-app开发经验分享五: 解决三端页面兼容问题的方法
在做uni-app开发的过程中,我们最头疼可能不是开发的过程中的逻辑,而是最后要做的三端兼容测试和修改,在我开发的项目中,这一步都是最头疼和令人头秃的过程,这里总结一些个人开发遇到的问题,希望对大家有 ...
- 深圳某小公司面试题:AQS是什么?公平锁和非公平锁?ReentrantLock?
AQS总体来说没有想象中那么难,只要了解它的实现框架,那理解起来就不是什么问题了. AQS在Java还是占很重要的地位的,面试也是经常会问. 目前已经连载11篇啦!进度是一周更新两篇,欢迎持续关注 [ ...
- windows10复制粘贴键突然失效无法复制粘贴的最简单办法
报了学习班,打开了VCE的加密文档 今天复制粘贴键突然失效 在网上捣鼓了好多方法都不行最后发现看看你有没有在用加密文件,也就是网课类的文档和视频.有就把它关了关了就好了
- 主题模型(Topic)
消息队列 RocketMQ - 打造金融级消息服务 - 阿里云 https://www.aliyun.com/product/rocketmq 主题模型(Topic) 发布/订阅(Pub/Sub) 一 ...
- HTTP/1HTTP/2HTTP/3
https://mp.weixin.qq.com/s/fy84edOix5tGgcvdFkJi2w
- status http status code 状态码
RFC 6585 - Additional HTTP Status Codes https://tools.ietf.org/html/rfc6585 https://developer.mozill ...