做空间的网站吗,青岛城阳 软件网站开发,深圳移动网站建设,网站开发类型什么意思文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数#xff1a;快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归#xff0c;循环#xff0c;前缀和#xff0c;差分STL 数学… 文章目录 数学质因数分解辗转相除法求最大公约数最小公倍数快速幂乘法逆元费马小定理 逆元乘法逆元素数判定与埃式筛法朴素素数判定法埃式筛法 图论并查集T3:真题--合根植物DijkstraFloyd 基础算法递归循环前缀和差分STL 数学
质因数分解 int reduce(int prime[],int pn,int n,int rest[]){int i,k0;for(i0;ipn;i){if (n1) break;if (prime[i]*prime[i]n) {rest[k]n;break;}while(n%prime[i]0){n/prime[i];rest[k]prime[i];}}return k;}解析 这段代码是一个名为reduce的函数它接受四个参数一个整数数组prime[]一个整数pn表示数组的长度一个整数n和一个整数数组rest[]。函数的目的是将整数n分解为质因数并将这些质因数存储在rest[]数组中。
函数首先初始化两个变量i和k其中i用于循环遍历prime[]数组k用于记录rest[]数组的索引。
接下来函数使用一个for循环遍历prime[]数组。在每次迭代中它首先检查n是否等于1如果是则跳出循环。然后它检查当前质数的平方是否大于n如果是则将n添加到rest[]数组中并跳出循环。
如果当前质数的平方不大于n则进入一个while循环。在这个循环中只要n能被当前质数整除就将n除以当前质数并将当前质数添加到rest[]数组中。这个过程会一直重复直到n不能被当前质数整除为止。
最后函数返回k即rest[]数组中的元素个数。
#includebits/stdc.h
using namespace std;int main()
{int n,i;cinn;coutn;for(i2;in;i){while(n!i){if(n%i0){couti*;nn/i;}elsebreak;}}coutnendl;return 0;
}辗转相除法求最大公约数
inline int gcd(int a,int b)
{if(a%b0)return b;elsereturn (gcd(b,a%b));
}简单写法
int gcb(int a,int b){return b0 ? a:gcb(b,a%b);}最小公倍数
int lcm(int a,int b){return a/gcd(a,b)*b;//防溢出 很妙啊 大家可以记一下
}快速幂 模板
int qmi(int a,int b,int p)//对p取模
{int res1;while(b)//只要b不为0就一直迭代下去 {if(b1)resres*a%p;//b为奇数乘一个a到答案里aa*a%p,b1;//底数平方指数除以2 }return res; } 例题数的幂次–1181
#includebits/stdc.h
using namespace std;using ll long long;ll qmi(ll a,ll b,ll p)//对p取模
{ll res1;while(b)//只要b不为0就一直迭代下去 {if(b1)resres*a%p;//b为奇数乘一个a到答案里a(ll)a*a%p,b1;//底数平方指数除以2 }return res; } int main(){int t;cint;while(t--){ll n,m,p;cinnmp;coutqmi(n,m,p)endl;}return 0;}乘法逆元
费马小定理 逆元 乘法逆元
例题1求乘法逆元
#include bits/stdc.h
using namespace std;
using lllong long;
int t,n;
ll p1e97;
ll qsm(ll a,ll b)
{ll res1;while(b){if(b1) resres*a%p;aa*a%p;b1;}return res%p;
}
ll inv(ll x)
{return qsm(x,p-2);
}
int main()
{cint;while(t--){cinn;coutinv(n)endl;}return 0;
}
例题2获胜的概率–3932
#includebits/stdc.h
using namespace std;
typedef long long ll;
const ll p1e97;
ll kmi(ll a,ll b)
{ll res1;while(b){if(b1) resres*a%p;aa*a%p;b1;}return res%p;}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,k;cinnk;if(k0){cout1endl;for(int i2;in;i) cout0endl;}else if(k1){for(int i1;in;i){if(i1) cout0endl;else coutkmi(n/2,p-2)endl;}}else{for(int i1;in;i){if(i1) coutkmi((n1)/2,p-2)endl;else cout0endl;}}return 0;}
素数判定与埃式筛法
朴素素数判定法 例题疑似素数-3334
#includebits/stdc.h
using namespace std;
//求和
int f(int x)
{int res0;while(x)resx%10,x/10;return res;}
bool isPrime(int n)
{if(n2)return false;for(int i2;in/i;i){if(n%i0)return false;}return true;}
int main()
{int n;cinn;int ans0;for(int i1;in;i){if(isPrime(f(i)))ans;}coutansendl;
}埃式筛法 bool vis[N];
vis[0]vis[1]true;//被筛掉了
for(int i2;in;i)
{if(!vis[i])//如果i没有被筛掉那么进行枚举for(int j2*i;jn;ji)//枚举倍数 ,每次j变成i的倍数vis[j]ture; } 例题2小明的素数对–3205
#includebits/stdc.h
using namespace std;
const int N1e7;
bool shai[N];vectorint vec;//将素数筛中杂乱的质数变成排列有序的一个集合用vector
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,ans0;cinn;shai[0]shai[1]1;for(int i2;in;i){if(!shai[i]){vec.push_back(i);for(int j2*i;jn;ji) shai[j]1;}}for(int i0;ivec.size();i)for(int ji1;jvec.size();j){if(!shai[vec[j]-vec[i]]) ans;}coutans;return 0;}
图论
并查集T3:真题–合根植物
并查集模版题注意不要调用string库。什么是并查集处理不相交集合的合并问题。用途求连通子图求最小生成树的Kruskal算法和求最近公共祖先等。操作 初始化 查询与合并 查询时对路径进行压缩 例题
#includecstdio
#includecstdlib
using namespace std;
// 开始的时候定义数组
#define MAXN 20001
int fa[MAXN];
//最好不要这样定义// 初始化
void init(int n)
{for(int i0;in;i)fa[i]i;}
// 查询 int find(int x){
// 递归出口if(xfa[x])return x;else{fa[x]find(fa[x]);return fa[x];}}
// 合并
void unionn(int i,int j)
{int i_fafind(i);// 找到i的祖先 int j_fafind(j);// 找到j的祖先 fa[i_fa]j_fa ;//i的祖先指向j的祖先 }
// 写主函数
int main()
{int m,n,x,y,q;scanf(%d,n);init(n);// 初始化这个数组scanf(%d,m); //有m行for(int i1;im;i){scanf(%d%d,x,y);unionn(x,y);} scanf(%d,q);// 输入q行 for(int i1;iq;i){scanf(%d%d,x,y);if(find(x)find(y))printf(YES\n);elseprintf(NO\n);}return 0; } 合根植物题解这道题只有一个返回值所以查询的时候注意不要增加一个返回值了。
#includestdio.h
int fa[1000005];
//初始化void init(int n){for (int i1;in;i)fa[i] i;}// 查询
int find(int x)
{if (fa[x] ! x){int sx find(fa[x]);fa[x] sx;}return fa[x];
}// 合并void unionn(int i,int j){int i_fafind(i);int j_fafind(j);fa[i_fa]j_fa;}
int main(void)
{int m,n,q;scanf(%d%d%d,m,n,q);init(m*n); int x,y;for(int i0;iq;i){scanf(%d%d,x,y);unionn(x,y);}//计数器的设置int ans0;for(int i1;im*n;i){if(ifa[i]){//一个数等于链条的祖先ans; } }printf(%d\n,ans);return 0;
}Dijkstra Floyd 基础算法
递归循环前缀和差分
添加链接描述
STL
添加链接描述
文章转载自: http://www.morning.dmxzd.cn.gov.cn.dmxzd.cn http://www.morning.jjrsk.cn.gov.cn.jjrsk.cn http://www.morning.yrjym.cn.gov.cn.yrjym.cn http://www.morning.ychoise.com.gov.cn.ychoise.com http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.gmnmh.cn.gov.cn.gmnmh.cn http://www.morning.zxdhp.cn.gov.cn.zxdhp.cn http://www.morning.btrfm.cn.gov.cn.btrfm.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.gcqdp.cn.gov.cn.gcqdp.cn http://www.morning.qkrqt.cn.gov.cn.qkrqt.cn http://www.morning.gbjxj.cn.gov.cn.gbjxj.cn http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.dhwyl.cn.gov.cn.dhwyl.cn http://www.morning.baguiwei.com.gov.cn.baguiwei.com http://www.morning.kflzy.cn.gov.cn.kflzy.cn http://www.morning.cctgww.cn.gov.cn.cctgww.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.bkqw.cn.gov.cn.bkqw.cn http://www.morning.rycbz.cn.gov.cn.rycbz.cn http://www.morning.kjfqf.cn.gov.cn.kjfqf.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.bchhr.cn.gov.cn.bchhr.cn http://www.morning.hsrpc.cn.gov.cn.hsrpc.cn http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn http://www.morning.srtw.cn.gov.cn.srtw.cn http://www.morning.jlxld.cn.gov.cn.jlxld.cn http://www.morning.jhrtq.cn.gov.cn.jhrtq.cn http://www.morning.nqyfm.cn.gov.cn.nqyfm.cn http://www.morning.cwgt.cn.gov.cn.cwgt.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn http://www.morning.nfpct.cn.gov.cn.nfpct.cn http://www.morning.prddj.cn.gov.cn.prddj.cn http://www.morning.rbzd.cn.gov.cn.rbzd.cn http://www.morning.prprz.cn.gov.cn.prprz.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.zwdrz.cn.gov.cn.zwdrz.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.srnth.cn.gov.cn.srnth.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.hydkd.cn.gov.cn.hydkd.cn http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.plgbh.cn.gov.cn.plgbh.cn http://www.morning.nydtt.cn.gov.cn.nydtt.cn http://www.morning.hpkr.cn.gov.cn.hpkr.cn http://www.morning.clnmf.cn.gov.cn.clnmf.cn http://www.morning.ymwrs.cn.gov.cn.ymwrs.cn http://www.morning.xblrq.cn.gov.cn.xblrq.cn http://www.morning.elsemon.com.gov.cn.elsemon.com http://www.morning.yfrbn.cn.gov.cn.yfrbn.cn http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn http://www.morning.hxrfb.cn.gov.cn.hxrfb.cn http://www.morning.cpzkq.cn.gov.cn.cpzkq.cn http://www.morning.xckqs.cn.gov.cn.xckqs.cn http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.dtfgr.cn.gov.cn.dtfgr.cn http://www.morning.qwhbk.cn.gov.cn.qwhbk.cn http://www.morning.qrwnj.cn.gov.cn.qrwnj.cn http://www.morning.mzcrs.cn.gov.cn.mzcrs.cn http://www.morning.phlrp.cn.gov.cn.phlrp.cn http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn http://www.morning.jpnfm.cn.gov.cn.jpnfm.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.zrmxp.cn.gov.cn.zrmxp.cn http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn http://www.morning.qxlyf.cn.gov.cn.qxlyf.cn http://www.morning.hwlmy.cn.gov.cn.hwlmy.cn http://www.morning.rbnnq.cn.gov.cn.rbnnq.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.yqwsd.cn.gov.cn.yqwsd.cn http://www.morning.sqhlx.cn.gov.cn.sqhlx.cn http://www.morning.ummpdl.cn.gov.cn.ummpdl.cn http://www.morning.jpwmk.cn.gov.cn.jpwmk.cn http://www.morning.sjpbh.cn.gov.cn.sjpbh.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.gpcy.cn.gov.cn.gpcy.cn http://www.morning.ckwxs.cn.gov.cn.ckwxs.cn