一、基础运算与输入输出
1. 基础公式
- 求和:
sum = 0 - 求乘积:
sum = 1 - 交换两个数:
swap(a, b) - 输入整数:
cin >> a - 输出整数:
printf("%d", a);
2. 判断条件
-
n 能被 i 整除:n % i == 0
-
偶数:n % 2 == 0
-
奇数:n % 2 == 1
3. 最值查找
-
最大值:max = -99999,if(max < ?) max = ?
-
最小值:min = 999999,if(min > ?) min = ?
4. 循环控制
-
统计数量:cnt = 0; cnt++;
-
循环 1~n:for(int i=1; i<=n; i++){}
-
输入 n 个数:for(int i=1; i<=n; i++){ cin >> x; }
-
中断循环:break
-
跳过本轮:continue
二、数组
1. 一维数组
- 输入 n 个值:
for(int i=1; i<=n; i++) cin >> a[i]; - 倒序输出:
for(int i=n-1; i>=0; i--)
2. 二维数组(n*m 矩阵)
for(int i=1; i<=n; i++){
for(int j=1; j<=m; j++){
cin >> a[i][j];
}
}
- 主对角线:
i == j - 副对角线:
i + j == n + 1
3. 字符数组 / 字符串
-
字符数组长度:#include ,strlen(数组名)
-
字符串长度:#include ,变量名.size()
-
整行读取:getline(cin, 变量名)
-
截取子串:s.substr(起始位置, 长度)
-
查找字符:s.find(字符),未找到返回 string::npos
-
替换内容:s.replace(起始位置, 长度, 新字符串)
-
删除字符:s.erase(起始位置, 长度)
-
插入字符:s.insert(位置, 字符串)
-
转整数:stoi(s),stoll(s)(long long)
-
整数转字符串:to_string(数字)
三、排序与库函数
1. 排序
-
升序:sort(数组名, 数组名+长度); 需 #include
-
降序:sort(数组名, 数组名+长度, greater());
2. 数学函数(#include )
-
幂:pow(2, 10)
-
int 绝对值:abs(-5)
-
float 绝对值:fabs(-5.999)
-
平方根:sqrt(225)
-
最大/最小:max(25, 6),min(25, 6)
-
向下取整:floor(5.9)
-
向上取整:ceil(5.2)
-
两点距离:sqrt((x2-x1)(x2-x1)+(y2-y1)(y2-y1))
四、STL 容器(#include <bits/stdc++.h>)
1. vector 动态数组
- 定义:vector v;
- 尾部添加:v.push_back(值);
- 尾部删除:v.pop_back();
- 访问元素:v[i] 或 v.at(i)
- 获取大小:v.size()
- 清空数组:v.clear()
- 判空:v.empty()
- 排序:sort(v.begin(), v.end());
2. map 映射(键值对)
- 定义:
map<string, int> mp; - 插入/修改:
mp["key"] = value; - 访问:
mp["key"] - 查找键:
mp.count("key")(返回0或1) - 遍历:
for(auto &p : mp){ cout << p.first << " " << p.second << endl; }
3. set 集合(自动去重+排序)
- 定义:set s;
- 插入:s.insert(值);
- 删除:s.erase(值);
- 查找:s.count(值)(返回0或1)
- 获取大小:s.size()
4. pair 二元组
- 定义:pair<int, int> p = {1, 2};
- 访问:p.first, p.second
- 比较:先比first,再比second
五、函数
1. 函数模板
函数类型 函数名(参数1, 参数2...){
return ?;
}
2. 质数判断
bool isprime(int n){
for(int i=2; i*i<=n; i++){
if(n%i==0) return false;
}
return true;
}
3. 因子和
int yinzi(int n){
int sum=0;
for(int i=1; i<n; i++){
if(n%i==0) sum += i;
}
return sum;
}
4. 斐波那契递推式
f[i] = f[i-1] + f[i-2]; (i>=3)
5. 最大公约数 gcd
int gcd(int a,int b){
if(b==0) return a;
return gcd(b,a%b);
}