CSP前的板子
板子A(扩展欧几里得)
题目描述
求关于x的同余方程 ax≡1(modb) 的最小正整数解。
输入格式
一行,包含两个正整数 a,b,用一个空格隔开。
输出格式
一个正整数 x,即最小正整数解。输入数据保证一定有解。
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long xx,yy;
void exgcd(long long aa,long long bb)
{
if(bb==)
{
xx=;
yy=;
return;
}
exgcd(bb,aa%bb);
long long tt=yy;
yy=xx-(aa/bb)*yy;
xx=tt;
}
int main()
{
long long aa,bb;
scanf("%lld%lld",&aa,&bb);
exgcd(aa,bb);
xx=((xx%bb)+bb)%bb;
printf("%lld",xx);
return ;
}
板子B1(乘法逆元(费马小定理或欧拉定理))
题目描述
给定n,p求1~n中所有整数在模p意义下的乘法逆元。
输入格式
一行n,p
输出格式
n行,第i行表示i在模p意义下的逆元。
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long mod;
long long ksm(long long aa,long long bb)
{
long long ret=;
while(bb!=)
{
if(bb%==)ret=((ret%mod)*(aa%mod))%mod;
bb/=;
aa=(aa%mod)*(aa%mod)%mod;
}
return ret%mod;
}
int main()
{
long long i;
long long n;
scanf("%lld%lld",&n,&mod);
for(i=;i<=n;i++)
{
printf("%lld\n",ksm(i,mod-));
}
return ;
}
板子B2(乘法逆元(扩展欧几里得))
题目描述
给定n,p求1~n中所有整数在模p意义下的乘法逆元。
输入格式
一行n,p
输出格式
n行,第i行表示i在模p意义下的逆元。
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long n,mod;
long long xx,yy;
void exgcd(long long aa,long long bb)
{
if(bb==)
{
xx=;
yy=;
return;
}
exgcd(bb,aa%bb);
long long tt=yy;
yy=xx-(aa/bb)*yy;
xx=tt;
}
int main()
{
long long i;
scanf("%lld%lld",&n,&mod);
for(i=;i<=n;i++)
{
exgcd(i,mod);
xx=((xx%mod)+mod)%mod;
printf("%lld\n",xx);
}
return ;
}
板子B3(乘法逆元(线性筛))
题目描述
给定n,p求1~n中所有整数在模p意义下的乘法逆元。
输入格式
一行n,p
输出格式
n行,第i行表示i在模p意义下的逆元。
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long inv[];
long long n,mod;
int main()
{
scanf("%lld%lld",&n,&mod);
long long i;
inv[]=;
printf("1\n");
for(i=;i<=n;i++)
{
inv[i]=mod-(mod/i)*inv[mod%i]%mod;
printf("%lld\n",inv[i]);
}
return ;
}
板子C(线性筛质数)
题目描述
如题,给定一个范围N,你需要处理M个某数字是否为质数的询问(每个数字均在范围1-N内)
输入格式
第一行包含两个正整数N、M,分别表示查询的范围和查询的个数。
接下来M行每行包含一个不小于1且不大于N的整数,即询问该数是否为质数。
输出格式
输出包含M行,每行为Yes或No,即依次为每一个询问的结果。
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
bool vist[];
int prim[];
int tot=;
int main()
{
int n,m;
int i,j;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++)
{
if(!vist[i])prim[++tot]=i;
for(j=;j<=tot&&i*prim[j]<=n;j++)
{
vist[prim[j]*i]=;
if(i%prim[j]==)
break;
}
}
int qq;
vist[]=;
for(i=;i<=m;i++)
{
scanf("%d",&qq);
if(vist[qq]==)printf("Yes\n");
else printf("No\n");
}
return ;
}
板子D(GCD&LCM)
题目描述
输入两个正整数m和n,求其最大公约数和最小公倍数。
输入格式
两个整数m和n。
输出格式
两个整数最大公约数,最小公倍数
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
long long gcd(long long aa,long long bb)
{
if(bb==)return aa;
else return gcd(bb,aa%bb);
}
int main()
{
long long n,m;
scanf("%lld%lld",&n,&m);
long long ls=gcd(n,m);
printf("%lld %lld",ls,n*m/ls);
return ;
}
CSP前的板子的更多相关文章
- CSP前的板子们
见窝的luogu博客qwq noip前的板子们
- noip前打板子 qwq
在某咕上打了一晚上的模板 感觉还好... #include<bits/stdc++.h> #define LL long long using namespace std; inline ...
- CSP前模板复习
Tarjan 求强连通分量 展开查看 #include #include #include using namespace std; const int N = 1e4 + 1e3; int n, m ...
- [日常] NOIP前集训日记
写点流水账放松身心... 10.8 前一天考完NHEEE的一调考试终于可以开始集训了Orz (然后上来考试就迟到5min, GG) T1维护队列瞎贪心, 过了大样例交上去一点也不稳...T出翔只拿了5 ...
- [OI]省选前模板整理
省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...
- Codeforces Round #594 (Div. 1)
Preface 这场CF真是细节多的爆炸,B,C,F都是大细节题,每道题都写了好久的说 CSP前的打的最后一场比赛了吧,瞬间凉意满满 希望CSP可以狗住冬令营啊(再狗不住真没了) A. Ivan th ...
- 【洛谷P1816】忠诚——ST表做法
看了两个小时RMQ并位运算,对二进制勉勉强强有了个初步了解,不能说精通(可能今年CSP前都做不到精通),但是记熟板子做做题还是没有问题的 以下是正式题解,相信你看过了题目,我介绍的是ST表的做法(很简 ...
- REHの收藏列表
搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可 ...
- NOIp2021 原地退役记
JS-0013 Day -2 - 2021.11.17 打了场 cmd_blk 出的模拟赛,T2 T3 都是做过的原题(AGC010C & ARC092D),于是直接摆烂交暴力垫底,成功为我的 ...
随机推荐
- JAVA 运行springboot jar包设置classpath
Java 命令行提供了如何扩展bootStrap 级别class的简单方法. -Xbootclasspath: 完全取代基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心 ...
- 使用Node.js时如何引入jQuery
使用Node.js时如何引入jQuery 首先安装jQuery依赖 npm install jquery 然后安装jsdom npm install jsdom 引入jQuery 新版正确的依赖方式 ...
- Gitlab 备份还原/迁移
Gitlab 备份还原 备份数据:通过命令进行备份操作 gitlab-rake gitlab:backup:create ... [DISABLED] Creating backup archive: ...
- 重温CLR(十八) 运行时序列化
序列化是将对象或对象图转换成字节流的过程,反序列化是将字节流转换回对象图的过程.在对象和字节流之间转换是很有用的机制. 1 应用程序的状态(对象图)可轻松保存到磁盘文件或数据库中,并在应用程序下次运行 ...
- m3u8的blob格式视频在线下载
有时候我们希望在在线观看视频的同时将对应的视频下载下来,研究了很多方式,最终发现使用ffmpeg这个工具可以很好完成m3u8格式. 具体方法就是执行: ffmpeg -i https://cdn-ho ...
- CSS3 transform 属性(2D,3D旋转)
一.语法 div{ transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */ -moz-transform:rotate(7deg) ...
- 8个有意思的JavaScript面试题
摘要: 神奇的JS系列. 作者:前端小智 原文:8个问题看你是否真的懂 JS Fundebug经授权转载,版权归原作者所有. JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质.浏览器 ...
- Java常用算法总结
冒泡排序 从左到右不断交换相邻逆序的元素,在一轮的循环之后,可以让未排序的最大元素上浮到右侧. 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出. 代码如下: public ...
- c# list集合简单快捷取随机
C#怎么在list集合中随机取出一个值: 首先我们取出这个List列表 然后生成随机数 最后通过这个随机数当作索引实现 var list = studentlist.OrderBy(a => a ...
- Centos7 安装chrony服务
从Centos7 开始,新增了一条时间查询命令:timedatectl [root@c2 ~]# timedatectl Local -- :: CST Universal -- :: UTC RTC ...