进制转换模板
题目描述请你编一程序实现两种不同进制之间的数据转换。
输入格式
共三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)n(2≤n≤16)n(2≤n≤16),第二行是一个n进制数,若n>10n>10n>10则用大写字母A−FA-FA−F表示数码10−1510-1510−15,并且该nnn进制数对应的十进制的值不超过100000000010000000001000000000,第三行也是一个正整数,表示转换之后的数的进制m(2≤m≤16)m(2≤m≤16)m(2≤m≤16)。
输出格式
一个正整数,表示转换之后的mmm进制数。
输入输出样例
输入 #1
16
FF
2
输出 #1
11111111
代码:#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<math.h>
#include<vector>
using namespace std;
int change(ch ...
markdown语法
文章链接
总结如下标题在想要设置为标题的文字前面加#来表示一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。
注:标准语法一般在#后跟个空格再写文字
字体
加粗
要加粗的文字左右分别用两个*号包起来
斜体
要倾斜的文字左右分别用一个*号包起来
斜体加粗
要倾斜和加粗的文字左右分别用三个*号包起来
删除线
要加删除线的文字左右分别用两个~~号包起来
引用在引用的文字前加>即可。引用也可以嵌套,如加两个>>三个>>>n个…貌似可以一直加下去,但没神马卵用
效果如下:
这是引用的内容
这是引用的内容
这是引用的内容
分割线三个或者三个以上的 - 或者 * 都可以。
实例:
---
----
***
*****
图片语法:
![图片alt](图片地址 ''图片title'')
图片alt就是显示在图片下面的文字,相当于对图片内容的解释。
图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加
上传本地图片直接点击导航栏的图片标志,选择图片即可markdown格式追求 ...
Sakura Theme美化
https://www.jianshu.com/p/e378b320c184超级详细的一个网址
容斥原理
今天学习了容斥原理,感觉智商又一次遭到了蹂躏(eoe),百度了CSDN上面的讲解,感觉讲的都不是很详细(或许真的是我笨吧,哎~),还是结合题目来讲吧,上题:
I - Co-prime
Given a number N, you are asked to count the number of integers between A and B inclusive which are relatively prime to N.Two integers are said to be co-prime or relatively prime if they have no common positive divisors other than 1 or, equivalently, if their greatest common divisor is 1. The number 1 is relatively prime to every integer.
Input
The first line on input contains T (0 < T <= 100) the ...
快读快写
应用一些题目需要读取的数据量十分庞大,很可能读取数据次数高达几十万次,而这时用cin或者scanf时间上就有了一些差距(scanf比cin要快),当输入数据更加庞大,scanf时间上也有些乏力,毕竟有些题目就是考你会不会快读快写,C语言输入输出字符时是要比数字输出的快的,我们可以利用这一点来把数字转化成字符来输出
下面的inline是内联函数的意思,小伙伴可以看 https://blog.csdn.net/hyqsong/article/details/51857833 了解一下
快读代码inline int read(){
int x=1,y=0;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') x=-1; ch=getchar(); //这里的循环是为了避免输入数字之前的空格造成影响
}
while(ch>='0'&&ch<=' ...
查并集
查并集也是一种比较常用的算法,有必要掌握下面文章转载于CSDN上的一篇博客,我觉得写的很详细,就把它贴出来吧地址:https://blog.csdn.net/Hacker_ZhiDian/article/details/60965556
基础
对于今天要总结的算法,我想先通过一道题目来看一下:
假设现在我有一个任务交给你:要求你查看 id 为 x 和 id 为 y 的两个人是不是朋友,在一开始我会在第一行中输入 3 个数字 n、m 、k。n 是代表总人数。接下来 m 行,每一行我会输入两个数字: Xi 、 Yi, 代表 id 为 Xi 和 id 为 Yi 的两个人是朋友(注意:朋友的朋友也是朋友), 接下来 k 行,每一行我也会输入两个数字: a 和 b ,代表我要你查询 id 为 a 和 id 为 b 的两个人是不是朋友, 如果这两个人是朋友,那么在一行中输出“yes”否则在一行中输出“no”。 数据约束:0 < n, m, k < 10000, 所有人的 id 都是正整数,并且 id 不会超过 n
样例输入:
7 5 4
1 3
2 4
3 4
1 4
5 6
1 ...
快速幂详解
原理先举个例子,比如说算3^6^,你要怎么算,用6个6相乘对不对,那要是3^1000^呢?1000个3相乘,复杂度为O(N),现在我们这样算,6的二进制是110,所以6=1(2^2^)+1(2^1^)+0(2^0^),那么3^6^就变成了3^( 1(2^2^)+1(2^1^)+0(2^0^) )=3^(1(2^2^)) 3^(1(2^1^))^ 3^(0*(2^0^))^,这其实就是快速幂的原理,看起来麻烦了对吗?OK,先不看复杂度,先看用代码如何实现,我们可以用一个数来充当3^(1*(2^2^))^、3^(1*(2^1^))^、3^(0*(2^0^))^,在下面的代码中y就是这个变量,不是每一次都要算的,比如3^(0*(2^0^))^=1,乘不乘都一样,那怎么判断呢?我们每次取二进制数的最后一位,要么是0要么是1,如果是0,就不用不用乘,否则就乘,先看代码:12345678910int p(int a,int b){ int t,y; //定义两个变量,t起到类乘的作用,而y则就是每一次要乘的数 t=1; y=a; //注意一定要初始化 while (b!=0 ...
BFS模板题
上一篇文章讲了dfs的记忆化搜索,来看看上一道题 “仙岛求药”
仙岛求药少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由 M×NM \times NM×N 个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。
输入格式
第一行输入两个非零整数 MMM 和 NNN,两者均不大于 202020。MMM 表示迷阵行数, NNN 表示迷阵列数。
接下来有 MMM 行, 每行包含 NNN 个字符,不同字符分别代表不同含义:
1) ‘@’:少年李逍遥所在的位置;2) ‘.’:可以安全通行的方格;3) ‘#’:有怪物的方格;4) ‘*’:仙药所在位置。
输出格式
输出一行,该行包含李逍遥找到仙药需要穿过的最少的方格数目(计数包括初始位置的方块)。如果他不可能找到仙药, 则输出 −1-1−1。
输出时每行末尾的多余空格,不影响答案正确性
样 ...
dfs记忆化搜索
今天学习了记忆化搜索,也练习了许多题,我果然是一个蒟蒻(qwq)
希望下面的讲解对您有所帮助
仙岛求药少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由 M×NM \times NM×N 个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。
输入格式
第一行输入两个非零整数 MMM 和 NNN,两者均不大于 202020。MMM 表示迷阵行数, NNN 表示迷阵列数。
接下来有 MMM 行, 每行包含 NNN 个字符,不同字符分别代表不同含义:
1) ‘@’:少年李逍遥所在的位置;2) ‘.’:可以安全通行的方格;3) ‘#’:有怪物的方格;4) ‘*’:仙药所在位置。
输出格式
输出一行,该行包含李逍遥找到仙药需要穿过的最少的方格数目(计数包括初始位置的方块)。如果他不可能找到仙药, 则输出 −1-1−1。
输出时每行末尾的多 ...
筛选素数的n种方法
暴力筛选这种方法我就不多说了,一个数是素数则其只能被1和它本身整除,抓住这个特性,从2开始遍历到这个数减1,如果该数能整除其中任意一个数,则其都不是素数,如果想筛选某个范围内的,则遍历这个区间,从左端点遍历到右端点,该数是素数则将其标记为0,遍历完以后,数组中是0的就是合数,非0是素数,时间复杂度On^2
1234567891011121314151617 判断一个数是不是质数 for(int i=2;i<n;i++){ if(n%i==0){ break; } }筛选一个区间的质数 memset(arr,1,sizeof arr); for(int j=x;j<=y;j++){ for(int i=2;i<n;i++){ if(n%i==0){ arr[j]=0; break; } ...