8.2学长讲解(数论入门)
相应题目链接:https://vjudge.net/contest/175786#overview
1.线性筛选素数:参考http://blog.csdn.net/zhang20072844/article/details/7647763
#include N 100000+5
int prime[N];
bool s[N];
void Prime()
{int i,j,k,t;//判断是否素数for (i=2; i<=N; i+=2) s[i]=0;for (i=1; i<=N; i+=2) s[i]=1;s[1]=0;s[2]=1;for (i=3; i<=sqrt(N); i+=2) {if (s[i]){k=2*i;//应为所有偶数已经剔除,所以此处t=3*i(相当于)也就是此次剔除的仍是奇数,所以避免了重复剔除偶数,速度快。t=i+k;while (t<=N){s[t]=0;t=t+k;}}}//素数打表k=1;prime[1]=2;for (i=3; i<=N; i+=2){if (s[i]==1){k++;prime[k]=i;}}
}
2.快速幂:
int pow(int a,int b)
{int ans=1;while(b){if(b&1)ans=ans*a;a=a*a;b=b>>1;}return ans;
}
3.欧几里德gcd+求乘法逆元x:(ax+by=c//ax=c+by)
通解
x = x0 + (b/gcd)*t
y = y0 - (a/gcd)*t
int e_gcd(int a,int b,int &x,int &y)
{if(b==0){x=1;y=0;return a;}int gcd=e_gcd(b,a%b,x,y);int t=x;x=y;y=t-a/b*y;return gcd;
}
int main()
{int x,y,c;cin>>a>>b; //ax+by=cgcd=e_gcd(a,b,x,y);if(c%gcd!=0)puts("无解");else{x=x*(c/gcd);printf("%d\n",(x%b+b)%b);}
}
4.Lucas求c(n,m)%p (n>10e6用)
Lucas(n,m,p)=C(n%p,m%p)* Lucas(n/p,m/p,p)
#include<iostream>
#include<cstdio>
#include<algorithm>
#define LL long long
using namespace std;
int t;
LL pow(LL a,LL b,LL p)
{LL ans=1;while(b){if(b&1)ans=(ans*a)%p;a=(a*a)%p;b=b>>1;}return ans;
}
LL C(LL n, LL m,LL p)
{LL i;if(m==0)return 1;if(m>n-m)m=n-m;LL up=1,down=1;for(i=1; i<=m; i++){up=(up*(n-i+1))%p;down=(down*i)%p;}return up*pow(down,p-2,p)%p;
}
LL lucas(LL n,LL m,LL p)
{if(m==0)return 1;return C(n%p,m%p,p)*lucas(n/p,m/p,p);
}
int main()
{scanf("%d",&t);LL m,n,p;while(t--){scanf("%lld%lld%lld",&n,&m,&p);printf("%lld\n",lucas(n,m,p));}return 0;
}
5.筛选欧拉函数
参考:http://blog.csdn.net/sentimental_dog/article/details/52002608
void init()
{euler[1]=1;for(int i=2; i<Max; i++)euler[i]=i;for(int i=2; i<Max; i++)if(euler[i]==i)for(int j=i; j<Max; j+=i)euler[j]=euler[j]/i*(i-1);//先进行除法是为了防止中间数据的溢出
}
8.2学长讲解(数论入门)相关推荐
- 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列
数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...
- AutoSAR系列讲解(入门篇)5.2-描述文件
AutoSAR系列讲解(入门篇)5.2-描述文件 描述文件 一.主要流程 二.各描述文件介绍 1.SWC描述文件 2.系统约束描述文件 3.ECU资源描述文件 4.系统配置描述文件 5.ECU提取文件 ...
- matlab狄利克雷函数,数论入门1——莫比乌斯函数,欧拉函数,狄利克雷卷积,线性筛,莫比乌斯反演,杜教筛...
数论入门1 一个菜鸡对数论的一点点理解... 莫比乌斯函数 定义函数$\mu(n)$为: 当n有平方因子时,$\mu(n)=0$. 当n没有平方因子时,$\mu(n)=(-1)^{\omega(n)} ...
- AutoSAR系列讲解(入门篇)4.1-BSW概述
AutoSAR系列讲解(入门篇)4.1-BSW概述 BSW概述 一.什么是BSW 二.BSW的结构 1.微控制器硬件抽象层(MCAL) 2.ECU抽象层 3.服务层 四.复杂驱动 三.再将结构细分 B ...
- AutoSAR系列讲解(入门篇)5.1-方法论概述
AutoSAR系列讲解(入门篇)5.1-方法论概述 方法论概述 一.一些必要的概念 1.供应链上的称呼 2.什么是方法论 二.工作流程 1.普通流程 2.AutoSAR标准流程 方法论概述 -> ...
- AutoSAR系列讲解(入门篇)6.1-Vector的工具链简介
AutoSAR系列讲解(入门篇)6.1-Vector的工具链简介 Vector的工具链简介 一.PREEvision 二.vVIRTUALtarget 三.DaVinci 四.CANoe 五.CANa ...
- AutoSAR系列讲解(入门篇)1.2-AutoSAR概述
AutoSAR系列讲解(入门篇)1.2-AutoSAR概述 AutoSAR概述 一.到底什么是AutoSAR 1.大白话来讲 2.架构上来讲 应用软件层: 实时运行环境: 基础软件层: 3.工具链上来 ...
- AutoSAR系列讲解(入门篇)1.1-AutoSAR发展
AutoSAR系列讲解(入门篇)1.1-AutoSAR发展 AutoSAR发展 一.AutoSAR成员 二.AutoSAR历史发展 三.使用AutoSAR前的状态 1.原始状态 2.进阶状态 四.使用 ...
- AutoSAR系列讲解(入门篇)2.2-SWC的类型
AutoSAR系列讲解(入门篇)2.2-SWC的类型 SWC的类型 一.原子级的SWC(Atomic SWC) 二.集合级的SWC(Composition SWC) 三.特殊的SWC SWC的类型 - ...
- 【小组专题一:数论入门:整数】数和序列 | 和与积 | 数学归纳与第二数学归纳
数论入门:整数 [1.1 数和序列] 练习中的证明: [1.2 和与积] 课后练习: [1.3 数学归纳法] 课后练习(都用数学归纳或者第二数学归纳证明): ·|· 根据<初等数论及其应用> ...
最新文章
- python文本筛选html_Python使用正则表达式去除(过滤)HTML标签提取文字功能
- 如何在Android Studio里关掉instant run
- 文本分类有哪些论文中很少提及却对性能有重要影响的tricks?
- 整数快速幂(原理+模板)
- 目标检测——如何获取图片的唯一ID
- jdk15不安装jre_弄懂 JRE、JDK、JVM 之间的区别与联系,你知道多少?
- classmethod staticmethod一些领悟
- 汽车故障诊断技术【4】
- linux分区修复命令行,Linux技巧:使用Fsck命令修复损坏的分区
- 微信小程序云开发--上传图片到云存储获取并展示云存储里的图片
- VBA中调用Excel函数
- 金蝶KIS商贸版即时库存表二次开发增加保质期有效期至字段列
- 《视频解密》中文版(第四版) 第七章 数字视频处理(第一部分)
- 微信昵称乱码 mysql_微信昵称乱码及mysql编码格式设立(utf8mb4)_mysql
- 2021-01-20
- 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本
- 变量被重复定义的问题的讨论
- camunda7、camunda8对比分析,哪个版本好
- 大商创是用哪种php柜架写的,大商创商家入驻入口去除说明简述
- Threejs系列--9游戏开发--沙漠赛车游戏【基础场景渲染】