数学--欧拉函数&素数&组合数&排列数
长沙大学ccsu_deer
这个作者很懒,什么都没留下…
展开
-
欧拉函数--通式证明、线性筛分析、部分性质
学习参考博客来自:自为风月马前卒、 DYT_B 欧拉函数通式证明 int phi(int n){ int 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; } 线性筛 //写在前面 //...原创 2020-06-07 19:10:35 · 449 阅读 · 0 评论 -
月月给华华出题 (线性筛快速幂)
//补了这两个题才知道线性还可以给快速幂筛?学到了学到了 链接:https://ac.nowcoder.com/acm/contest/392/D 来源:牛客网 月月给华华出题 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 因为月月是个信息学高手,所以她也给华华出了一题,让...原创 2019-05-31 09:47:42 · 472 阅读 · 2 评论 -
BZOJ 2818: Gcd(欧拉函数的应用)
题目来源:https://www.lydsy.com/JudgeOnline/problem.php?id=2818 2818: Gcd Time Limit:10 SecMemory Limit:256 MB Submit:9819Solved:4363 [Submit][Status][Discuss] Description 给定整数N,求1<=x,y<=...原创 2019-05-08 21:43:56 · 399 阅读 · 0 评论 -
HDU2588(欧拉函数的应用)
打开百度搜索了莫比乌斯,来自哔哩哔哩的一个视频讲的非常的好: https://www.bilibili.com/video/av14325327/ 不过他在讲莫比乌斯反演之前,先讲了两道欧拉函数应用的题: HDU2588 和bzoj2818 GCD Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32...原创 2019-05-08 21:23:29 · 868 阅读 · 0 评论 -
常见的5个数论函数线性筛求法
1、素数求法 2、欧拉函数 3、因子个数函数 4、因子和函数 5、莫比乌斯函数 普通线性筛素数 #include<stdio.h> #define max_n 10005 int num[max_n]={0} int main(){ for(int i=2;i<max_n;i++){ if(num[i]==0){ num[++num[0]]=i; ...原创 2019-05-08 19:37:33 · 890 阅读 · 0 评论 -
组合数-取模 费马小定理
由于博客有些公式打不出来,下面是博客园的链接 逆元---组合数取模 https://www.cnblogs.com/liziran/p/6804803.html 逆元组合数取模的应用是,当数据非常大的时候,超过long long 用一般的公式 就会爆范围, 所以采用逆元 用C++实现的代码,输入为n,m,mod,要求0<=m<=n<=1e6(否则fac存不下...原创 2018-08-22 10:32:28 · 503 阅读 · 0 评论 -
问题 A: 组合数
唯一分解定理在此 问题 A: 组合数 时间限制: 1 Sec内存限制: 128 MB 提交: 1938解决: 147 [提交] [状态] [命题人:jsu_admin] 题目描述 求组合数C(N,M),以及C(N,M)因子个数。 输入 N和M,其中0<=M<=N<=50,以EOF结束。 输出 该组合数结果 样例输入 Copy 3 2 4 2 ...原创 2018-12-27 21:30:17 · 382 阅读 · 0 评论 -
求组合数
法一(逆元法): 条件,模数为质数 ll f(ll x){ ll r=1; for(int i=2;i<=x;i++)r=r*i%mod; return r; } ll getC(ll n,ll m){ return f(n)*powmod(f(n-m)*f(m)%mod,mod-2)%mod; } 法二(暴力):容易超时和超ll: #include <iostre...原创 2019-03-18 20:08:59 · 489 阅读 · 0 评论 -
求排列数
int getA(int n, int r){ int ans = 1; for(int i = 0; i < r; ++i) ans *= n-i; return ans; }转载 2019-03-18 20:11:21 · 1500 阅读 · 0 评论 -
素数求法
法一: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<sstream> using namespace std; #define N 100000 bool p[N]; vector<int>prime;...原创 2019-03-18 20:04:53 · 315 阅读 · 0 评论 -
欧拉函数求法
法一:范围:1e9以内: int phi(int n){ int ans = n; for(int i=2; i<=sqrt(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; } 法二:1e18以内...原创 2019-03-18 20:03:42 · 502 阅读 · 0 评论