
数论
文章平均质量分 52
河林山
这个作者很懒,什么都没留下…
展开
-
[NOI2002]Robot(欧拉函数+DP)
计蒜客之提交链接题意:——默认你已仔细阅读过题干,并且了解欧拉函数。简化版题意:——题目已给出 m 的质因数分解式,找 m 的所有约数,约数可分为3类(政客,军人,学者),每个约数只能代表三者其一。即:所以政客+所有军人+所有学者==m的所有约数。注意:所有约数中不包括1,因为 1 不属于三者中任意一个。——所求:所有政客的独立数之和,所有军人的独立数之和,所有学者的独立数之和。质因数分解式就是找约数使用的。注释:独立数:x 的独立数:就是 x 的欧拉函数值。政客:能分解成偶数个不同原创 2022-04-07 11:44:45 · 916 阅读 · 1 评论 -
单个欧拉值模板,欧拉函数打表模板,素数和欧拉一起打表模板
计蒜客之例题1题解:——t 小 n 大,适合用单个求欧拉值模板代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;ll phi(ll n){ ll i,rea=n; for(i=2;i*i<=n;i++) { if(n%i==0) { rea=rea-rea/i; while(n%i==0) n/=i; } } if(n>1) rea=rea原创 2022-04-05 17:50:32 · 1308 阅读 · 0 评论 -
求1e8以为素数的个数【埃氏筛,线性筛(欧拉筛),埃氏筛升级版】
1e6 784981e7 6645791e8 5761455 埃氏筛(慢)#include<bits/stdc++.h>using namespace std;const int MAXN=1e8;int prime[MAXN+1],book[MAXN+1],cnt;void getPrime(){ cnt=0; memset(book,0,sizeof(book)); book[0]=book[1]=1; int i,j; for(i=原创 2022-03-02 20:14:31 · 1415 阅读 · 0 评论 -
数论求F(n)
/*题意:f(5,1)=4,即5/1=5,5-1=4;f(8,2)=3,即8/2=4,4-1=3;f(7,3)=1,即7/3=2,2-1=1;f(5,4)=0,即5/4=1,1-1=0;求:F(n)=f(n,1)+f(n,2)+f(n,3)+…+f(n,n)=n/1+n/2+…+n/n-n思路:n非常大,暴力会超时,找数试找规律,练思维的题这里先求:n/1+n/2+…+n/n (每个数的结果都是整数,有小数的舍弃小数部分)例:F(9)=n/1+n/2+n/3+n/4+n/5+n/6原创 2020-08-16 16:52:07 · 219 阅读 · 0 评论 -
GCD Game(HDU-7061)【博弈论-Nim-质因数应用-质因数个数预处理】
标题:GCD Game--------------------------------------------------------------------------------------------vjudge提交链接题解:大佬链接:Viktoriae代码:#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;const int N=1e7;bool转载 2021-08-12 21:06:03 · 208 阅读 · 0 评论 -
求逆元的一点理解(不了解逆元为何能解决除法取模问题)
/ * 以下皆是关于模板的理解,数学证明略 * /一、 逆元的用处:求(a / b)% p运算符 (加 、减 、 乘 ) 可以利用分配律来求解。但除法却不可以。——逆元的作用:可把除法转化为乘法。简单理解:就是求b的倒数,但1 / b 显然是小数,不是想要的结果,想办法变为整数,即求b关于p的逆元。——现在只看 b 和 p,跟 a 没关系。什么情况下才可以 b 关于 p 求逆元呢?——只有当gcd(b,p)==1时,逆元才存在。咋求:第一种情况(特例):p是质数。费马小定理:逆元转载 2021-08-01 10:39:33 · 733 阅读 · 0 评论 -
约瑟夫环(Joseph环)公式推导C语言版
约瑟夫问题:——n个人围成一圈,第一个人从1开始报数,报m的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。解法:——下面写的都是参考这位大佬的博客写的,如果有冒犯到您,及时告知。——递推公式: Joseph(n,m)=(Joseph(n−1,m)+m)%n f(n,m)表示:n个人报数,每报到m时杀掉那个人,返回最终胜利者的编号。f(n−1,m)表示:n-1个人报数,每报到M时杀掉那个人,返回最终胜利者的编号。——显而易见,上述转载 2021-05-25 14:06:29 · 1235 阅读 · 0 评论 -
素数筛,因子个数,欧拉函数,快速幂和欧拉函数结合解决问题,素数筛版欧拉表等等
素数筛:void db(){ k=0; ll i,j; for(i=2;i<=N;i++) if(p[i]==0) { prime[k++]=i; for(j=i*2;j<=N;j+=i) p[j]=1; }}因子个数//ans=(1+a1)*(1+a2)*(1+a3)*...*(1+an) [ai为相同质因数个数] ll yzgs(ll a){ ll i,x,ans=1; for(i=0;i<k&&prime[i]原创 2021-05-18 20:55:29 · 206 阅读 · 0 评论