文章目录
前言
这几天在准备蓝桥杯,根据我自己的情况,总结了一点模板,这个小白看看就行了,大佬勿看,都比较基础,没什么特别难的知识点。
ASCII码
十进制 DEC | 八进制 OCT | 十六进制 HEX | 二进制 BIN | 符号 Symbol | HTML 实体编码 | 中文解释 Description |
---|---|---|---|---|---|---|
33 | 041 | 21 | 00100001 | ! | ! | 感叹号 |
---|---|---|---|---|---|---|
34 | 042 | 22 | 00100010 | " | " | 双引号 |
35 | 043 | 23 | 00100011 | # | # | 井号 |
36 | 044 | 24 | 00100100 | $ | $ | 美元符 |
37 | 045 | 25 | 00100101 | % | % | 百分号 |
38 | 046 | 26 | 00100110 | & | & | 与 |
39 | 047 | 27 | 00100111 | ’ | ' | 单引号 |
40 | 050 | 28 | 00101000 | ( | ( | 左括号 |
41 | 051 | 29 | 00101001 | ) | ) | 右括号 |
42 | 052 | 2A | 00101010 | * | * | 星号 |
43 | 053 | 2B | 00101011 | + | + | 加号 |
44 | 054 | 2C | 00101100 | , | , | 逗号 |
45 | 055 | 2D | 00101101 | - | - | 连字号或减号 |
46 | 056 | 2E | 00101110 | . | . | 句点或小数点 |
47 | 057 | 2F | 00101111 | / | / | 斜杠 |
48 | 060 | 30 | 00110000 | 0 | 0 | 0 |
49 | 061 | 31 | 00110001 | 1 | 1 | 1 |
50 | 062 | 32 | 00110010 | 2 | 2 | 2 |
51 | 063 | 33 | 00110011 | 3 | 3 | 3 |
52 | 064 | 34 | 00110100 | 4 | 4 | 4 |
53 | 065 | 35 | 00110101 | 5 | 5 | 5 |
54 | 066 | 36 | 00110110 | 6 | 6 | 6 |
55 | 067 | 37 | 00110111 | 7 | 7 | 7 |
56 | 070 | 38 | 00111000 | 8 | 8 | 8 |
57 | 071 | 39 | 00111001 | 9 | 9 | 9 |
58 | 072 | 3A | 00111010 | : | : | 冒号 |
59 | 073 | 3B | 00111011 | ; | ; | 分号 |
60 | 074 | 3C | 00111100 | < | < | 小于 |
61 | 075 | 3D | 00111101 | = | = | 等号 |
62 | 076 | 3E | 00111110 | > | > | 大于 |
63 | 077 | 3F | 00111111 | ? | ? | 问号 |
64 | 100 | 40 | 01000000 | @ | @ | 电子邮件符号 |
65 | 101 | 41 | 01000001 | A | A | 大写字母 A |
66 | 102 | 42 | 01000010 | B | B | 大写字母 B |
67 | 103 | 43 | 01000011 | C | C | 大写字母 C |
68 | 104 | 44 | 01000100 | D | D | 大写字母 D |
69 | 105 | 45 | 01000101 | E | E | 大写字母 E |
70 | 106 | 46 | 01000110 | F | F | 大写字母 F |
71 | 107 | 47 | 01000111 | G | G | 大写字母 G |
72 | 110 | 48 | 01001000 | H | H | 大写字母 H |
73 | 111 | 49 | 01001001 | I | I | 大写字母 I |
74 | 112 | 4A | 01001010 | J | J | 大写字母 J |
75 | 113 | 4B | 01001011 | K | K | 大写字母 K |
76 | 114 | 4C | 01001100 | L | L | 大写字母 L |
77 | 115 | 4D | 01001101 | M | M | 大写字母 M |
78 | 116 | 4E | 01001110 | N | N | 大写字母 N |
79 | 117 | 4F | 01001111 | O | O | 大写字母 O |
80 | 120 | 50 | 01010000 | P | P | 大写字母 P |
81 | 121 | 51 | 01010001 | Q | Q | 大写字母 Q |
82 | 122 | 52 | 01010010 | R | R | 大写字母 R |
83 | 123 | 53 | 01010011 | S | S | 大写字母 S |
84 | 124 | 54 | 01010100 | T | T | 大写字母 T |
85 | 125 | 55 | 01010101 | U | U | 大写字母 U |
86 | 126 | 56 | 01010110 | V | V | 大写字母 V |
87 | 127 | 57 | 01010111 | W | W | 大写字母 W |
88 | 130 | 58 | 01011000 | X | X | 大写字母 X |
89 | 131 | 59 | 01011001 | Y | Y | 大写字母 Y |
90 | 132 | 5A | 01011010 | Z | Z | 大写字母 Z |
91 | 133 | 5B | 01011011 | [ | [ | 左中括号 |
92 | 134 | 5C | 01011100 | \ | \ | 反斜杠 |
93 | 135 | 5D | 01011101 | ] | ] | 右中括号 |
94 | 136 | 5E | 01011110 | ^ | ^ | 音调符号 |
95 | 137 | 5F | 01011111 | _ | _ | 下划线 |
96 | 140 | 60 | 01100000 | ` | ` | 重音符 |
97 | 141 | 61 | 01100001 | a | a | 小写字母 a |
98 | 142 | 62 | 01100010 | b | b | 小写字母 b |
99 | 143 | 63 | 01100011 | c | c | 小写字母 c |
100 | 144 | 64 | 01100100 | d | d | 小写字母 d |
101 | 145 | 65 | 01100101 | e | e | 小写字母 e |
102 | 146 | 66 | 01100110 | f | f | 小写字母 f |
103 | 147 | 67 | 01100111 | g | g | 小写字母 g |
104 | 150 | 68 | 01101000 | h | h | 小写字母 h |
105 | 151 | 69 | 01101001 | i | i | 小写字母 i |
106 | 152 | 6A | 01101010 | j | j | 小写字母 j |
107 | 153 | 6B | 01101011 | k | k | 小写字母 k |
108 | 154 | 6C | 01101100 | l | l | 小写字母 l |
109 | 155 | 6D | 01101101 | m | m | 小写字母 m |
110 | 156 | 6E | 01101110 | n | n | 小写字母 n |
111 | 157 | 6F | 01101111 | o | o | 小写字母 o |
112 | 160 | 70 | 01110000 | p | p | 小写字母 p |
113 | 161 | 71 | 01110001 | q | q | 小写字母 q |
114 | 162 | 72 | 01110010 | r | r | 小写字母 r |
115 | 163 | 73 | 01110011 | s | s | 小写字母 s |
116 | 164 | 74 | 01110100 | t | t | 小写字母 t |
117 | 165 | 75 | 01110101 | u | u | 小写字母 u |
118 | 166 | 76 | 01110110 | v | v | 小写字母 v |
119 | 167 | 77 | 01110111 | w | w | 小写字母 w |
120 | 170 | 78 | 01111000 | x | x | 小写字母 x |
121 | 171 | 79 | 01111001 | y | y | 小写字母 y |
122 | 172 | 7A | 01111010 | z | z | 小写字母 z |
123 | 173 | 7B | 01111011 | { | { | 左大括号 |
124 | 174 | 7C | 01111100 | | | | | 垂直线 |
125 | 175 | 7D | 01111101 | } | } | 右大括号 |
126 | 176 | 7E | 01111110 | ~ | ~ | 波浪号 |
127 | 177 | 7F | 01111111 | � | 删除 |
月份数组
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
判断闰年
bool isYear(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
{
return true;
}
else
{
return false;
}
}
将20200101转换为年月日
int year = y / 10000;
y = y % 10000;
int month = y / 100;
int day = y % 100;
检查数字是否为年月日(是否合法)
bool check_valid(int year, int month, int day)
{
if (month == 0 || month > 12)
{
return false;
}
if (day == 0)
{
return false;
}
if (month != 2)
{
if (day > days[month])
{
return false;
}
}
else
{
int leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
if (day > days[month] + leap)
{
return false;
}
}
return true;
}
一秒=1000毫秒
int的范围
-2^31=-21 4748 3648 到 2^31-1=21 4748 3647。共10位,21亿。
2^31=2,147,483,648 10^9数量级
将时间戳转换成时分秒
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
long long int time;
cin>>time;
time /= 1000;
long long int s = time % 60;
time /= 60;
long long int m = time % 60;
time /= 60;
long long int h = time % 24;
printf("%02lld:%02lld:%02lld",h,m,s);
return 0;
}
将时间戳转换为日期形式
#include <stdio.h>
#include <time.h>
int main()
{
time_t t = 46800999; // 假设时间戳为2021年5月4日12点0分0秒
struct tm *tm = localtime(&t);
char s[64];
strftime(s, sizeof(s), "%Y:%m:%d-%H:%M:%S", tm);
// strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", tm);
printf("%s\n", s);
}
精确道毫秒级别
#include <stdio.h>
#include <time.h>
int main()
{
long long timestamp = 1649262000000; // Replace this with your timestamp
time_t seconds = timestamp / 1000;
struct tm *timeinfo = localtime(&seconds);
char buffer[80];
strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", timeinfo);
printf("%s.%03ld\n", buffer, timestamp % 1000);
}
判断一个字符是不是为数字的函数isdigit,将字符数字转换为数字
isdigital()如果是的话就会返回1
str[i]-‘0’:这样可以将字符转换为数字。
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main(){
string str;
cin>>str;
int len = str.size();
// printf("%s %d",str,len);
for(int i = 0 ; i < len ;i ++){
if(isdigit(str[i]) == 1){
int x = str[i] - '0';
// printf("%d",x);
for(int j = 0 ;j < x - 1 ;j ++){
printf("%c",str[i - 1]);
}
}
else{
printf("%c",str[i]);
}
}
}
dbs暴搜
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
int res;
void dfs(int x , int y){
if(x > m || y > n) return;
if(x % 2 == 0 && y % 2 ==0) return;
if(x == m && y == n){
res ++;
}
dfs(x + 1 , y);
dfs(x , y + 1);
}
int main(){
cin>>n>>m;
dfs(1,1);
printf("%d",res);
return 0;
}
最大公约数&最小公倍数
x*y=最小公倍数*最大公约数
辗转相除法求最大公约数:
int measure(int x, int y)
{
int z = y;
while(x%y!=0)
{
z = x%y;
x = y;
y = z;
}
return z;
}
gcd函数求最大公约数
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// 使用 __gcd(int a, int b) 函数
int a = 3, b = 9;
cout << __gcd(a, b); // 输出的就是a与b的gcd函数
}
string字符串相关操作
size()
size()和length():返回string对象的字符个数,他们执行效果相同。
大小写转换
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "ABCDEFG";
for( int i = 0; i < s.size(); i++ )
{
s[i] = tolower(s[i]);
}
cout<<s<<endl;
return 0;
}
find()
void test8()
{
string s("dog bird chicken bird cat");
//字符串查找-----找到后返回首字母在字符串中的下标
// 1. 查找一个字符串
cout << s.find("chicken") << endl; // 结果是:9
// 2. 从下标为6开始找字符'i',返回找到的第一个i的下标
cout << s.find('i',6) << endl; // 结果是:11
// 3. 从字符串的末尾开始查找字符串,返回的还是首字母在字符串中的下标
cout << s.rfind("chicken") << endl; // 结果是:9
// 4. 从字符串的末尾开始查找字符
cout << s.rfind('i') << endl; // 结果是:18-------因为是从末尾开始查找,所以返回第一次找到的字符
// 5. 在该字符串中查找第一个属于字符串s的字符
cout << s.find_first_of("13br98") << endl; // 结果是:4---b
// 6. 在该字符串中查找第一个不属于字符串s的字符------先匹配dog,然后bird匹配不到,所以打印4
cout << s.find_first_not_of("hello dog 2006") << endl; // 结果是:4
cout << s.find_first_not_of("dog bird 2006") << endl; // 结果是:9
// 7. 在该字符串最后中查找第一个属于字符串s的字符
cout << s.find_last_of("13r98") << endl; // 结果是:19
// 8. 在该字符串最后中查找第一个不属于字符串s的字符------先匹配t--a---c,然后空格匹配不到,所以打印21
cout << s.find_last_not_of("teac") << endl; // 结果是:21
}
字符排序sort()
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
void test9()
{
string s = "cdefba";
sort(s.begin(),s.end());
cout<<"s:"<<s<<endl; // 结果:abcdef
}
1MB=1024kb
1MB=1024kb
1kb=1024字节(byte)
1字节=8位(bits)
比long long int 还大的数字范围
unsigned long long int
c++中的最大值
**最大值:**0x3f3f3f3f
**最小值:**0xc0c0c0c0
前缀和
#include<iostream>
using namespace std;
const int N = 100010;
int a[N] , s[N];
int main(){
int n , m;
/// n为数组的大小 m查询个数
scanf("%d%d",&n,&m);
// 输入数组的数值
for(int i = 1 ;i <= n ;i++) scanf("%d",&a[i]); //初始化数组
//计算 数组中前缀和
for(int i = 1 ;i <= n; i++) s[i] = s[i-1] + a[i] ; //初始化前缀和
//
while(m --){
int l , r; //定义左侧与右侧
scanf("%d %d",&l,&r);
printf("%d\n",s[r] - s[l-1]);
}
}
将26位字符映射到0-25
string s; //存放的字符串
int count[26] ={0}; //用来记录字符串中每一个字符出现的次数
for(int i = 0 ; i < s.size() ; i++){
int index = s[i] - 'a';
count[index] ++;
}
相关进制转换
十进制以八进制和16进制输出
#include<iostream>
using namespace std;
int main(){
int a;
scanf("%d",&a);
printf("原始数据:%d \n",a);
printf("以八进制输出:%o \n",a);
printf("以十六进制输出:%x",a);
return 0;
}
十进制转任何进制
//十进制转换为任意进制的源码
#include <iostream>
using namespace std;
int main()
{
long n;
int p,c,m=0,s[100];
cout<<"输入要转换的数字:"<<endl;
cin>>n;
cout<<"输入要转换的进制:"<<endl;
cin>>p;
cout<<"("<<n<<")10="<<"(";
while (n!=0)//数制转换,结果存入数组s[m]
{
c=n%p;
n=n/p;
m++;s[m]=c; //将余数按顺序存入数组s[m]中
}
for(int k=m;k>=1;k--)//输出转换后的序列
{
if(s[k]>=10) //若为十六进制等则输出相对应的字母
cout<<(char)(s[k]+55);
else //否则直接输出数字
cout<<s[k];
}
cout<<")"<<p<<endl;
return 0;
}
十进制转n进制
void conversion(int a,int n)
{
if(a <= 0)
{
cout << 0;
return;
}
stack<int> aa;
while(a)
{
aa.push(a%n);
a/=n;
}
while(!aa.empty())
{
int t = aa.top();
if(t > 9)
{
char c = t-10 + 'A';
cout << c;
}else
cout << t ;
aa.pop();
}
}
十进制转二进制
//十进制转二进制
#include<iostream>
using namespace std;
void printbinary(const unsigned int val)
{
for(int i = 16; i >= 0; i--)
{
if(val & (1 << i))
cout << "1";
else
cout << "0";
}
}
int main()
{
printbinary(1024);
return 0;
}
四舍五入
round()
相关数学函数
sqrt
pow
返回的是double类型的
素数
#include <stdio.h>
int main() {
int n;
printf("请输入一个1-100之间的整数:\n");
scanf("%d", &n);
int m = 0;
for (int i = 2; i < n; i++ ) {
if(n % i == 0) {
m++;
}
}
if (m == 0) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
回文数
bool hws(int n)
{
int ans=0,m=n;
while(m>0)
{
ans=ans*10+m%10;
m/=10;
}
return ans==n;
}
等差数列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bEimwBn2-1681032329168)(C:\Users\陈勇\AppData\Roaming\Typora\typora-user-images\image-20230407222545633.png)]
等比数列
快速幂
const int mod = 1e9 + 7; // (a的b次方对mod取模)
int ksm(int a, int b)
{
int res = 1;
while (b)
{
if (b & 1)
res = res % mod * a % mod;
a = a % mod * a % mod;
b >>= 1;
}
return res;
}
);
int m = 0;
for (int i = 2; i < n; i++ ) {
if(n % i == 0) {
m++;
}
}
if (m == 0) {
printf("%d是素数\n", n);
} else {
printf("%d不是素数\n", n);
}
return 0;
}
# 回文数
```c++
bool hws(int n)
{
int ans=0,m=n;
while(m>0)
{
ans=ans*10+m%10;
m/=10;
}
return ans==n;
}
等差数列
[外链图片转存中…(img-bEimwBn2-1681032329168)]
等比数列
[外链图片转存中…(img-tinvav5y-1681032329169)]
快速幂
const int mod = 1e9 + 7; // (a的b次方对mod取模)
int ksm(int a, int b)
{
int res = 1;
while (b)
{
if (b & 1)
res = res % mod * a % mod;
a = a % mod * a % mod;
b >>= 1;
}
return res;
}