About
这篇博客是考试前自行默板时写的。
也能更方便地查阅板子。
快速幂||取余运算
2021/10/21
#include<iostream>
#include<cstdio>
using namespace std;
long long x,y,p;
int ksm(long long x,long long y)
{
long long js=1;
while(y)
{
if(y&1)
js=(js*x)%p;
x=(x*x)%p;
y>>=1;
}
return js;
}
int main()
{
scanf("%lld%lld%lld",&x,&y,&p);
printf("%lld^%lld mod %lld=%lld",x,y,p,ksm(x,y));
return 0;
}
线性筛素数
2021/10/21
#include<iostream>
#include<cstdio>
using namespace std;
int prime[10101010],c;
bool v[100000010];
int n,q,x;
void oula()
{
for(int i=2; i<=n; i++)
{
if(!v[i])
prime[++c]=i;
for(int j=1; prime[j]*i<=n&&j<=c; j++)
{
v[i*prime[j]]=1;
if(i%prime[j]==0)
break;
}
}
}
int main()
{
scanf("%d%d",&n,&q);
oula();
while(q--)
{
scanf("%d",&x);
printf("%d\n",prime[x]);
}
return 0;
}
并查集
2021/10/21
#include<iostream>
#include<cstdio>
using namespace std;
int fa[1000010];
int n,m,w,x,y;
int find(int faa)
{
if(fa[faa]==faa)
return faa;
return fa[faa]=find(fa[faa]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
fa[i]=i;
while(m--)
{
scanf("%d%d%d",&w,&x,&y);
if(w==1)
fa[find(x)]=find(y);
else
{
if(find(x)!=find(y))
printf("N\n");
else
printf("Y\n");
}
}
return 0;
}