1.向下向上取整
a / b 是向下取整
(a + b - 1) / b 是向上取整
2.求a - b 模k的余数且为正数
a - b为正数时可以直接(a - b) % k
为负数的时候 (a + k - b % k) % k
可以直接记:(a + k - b % k) % k
3.auto遍历vector
vector<int> v[N];
for (auto i : v) {
//具体实现
}
4.sstream
用于解决给定数据行数,但每行的数据个数不确定的输入问题。
#include <iostream>
#include <cstring>
#include <algorithm>
#include <sstream>
using namespace std;
const int N = 10010;
int n;
int a[N];
int main() {
int cnt;
cin >> cnt;
string line;
getline(cin, line);//忽略第一行的回车
while (cnt -- ) {
getline(cin, line);
stringstream ssin(line);
while (ssin >> a[n]) n++;
}
/*
...
*/
return 0;
}
蓝桥杯真题: AcWing 1204. 错误票据
5.字符串处理
‘0’的ASCII码为48
‘a’的ASCII码为97,’A’为65,大写比小写小了32!!!
string s;
cin >> s;//可以是数字字符串
scanf("%s", s + 1);//不用加&,碰到空格和回车就停止
s.size();//字符串的长度
//字符串的下标从0开始
string s1 = s.substr(2, 3);//从下标为2开始,截取长度为3的字符
strcmp(a, b);//比较a,b字符串数组的字典序大小
strcpy(a, b);//将char数组b赋给a
string s = to_string(a);//把数值a转换为字符串
a - '0';//转换为数字
a - 'a';//转换为字母
scanf("A%d", &n);//输入A0,则n就是0,一个小技巧
蓝桥杯真题: AcWing 2066. 解码
蓝桥杯真题: AcWing 1245. 特别数的和
蓝桥杯真题: AcWing 1231. 航班时间
蓝桥杯真题: AcWing 4652. 纸张尺寸
蓝桥杯真题: AcWing 2876. 日期识别
蓝桥杯真题: AcWing 1245. 特别数的和
6.p和q均为正整数且互质,则用p和q凑不出来的最大整数为
(p - 1) * (q - 1) - 1;
蓝桥杯真题: AcWing 1205. 买不到的数目
7.log2[N];//以2为底的对数
for (int i = 0; i < n; i ++ ) log2[1 << i] = i;
8.求一个数的每一位
//可以直接转成字符串,然后循环输出就行
string s = to_string(n);
//谨记 %10 和 /10的不同含义
// %10 表示除10的余数,也就是取个位
// /10 表示除10得到的数,在循环里面就是删掉最后一位,让下一次循环得到个位
while (n) {
cout << n % 10;
n /= 10;
}
9.数组的下标
//给一个数组元素的编号 v,求该元素的行号和列号,数组下标从0开始
//m表示列的宽度
//行号: v / m;
//列号: v % m;
//如果列号要反转,则:m - 1 - v % m;
蓝桥杯真题: AcWing 1219. 移动距离
10.位运算
//2的n次方
1 << n;
11.日期问题
int months[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool check(int date) {
int year = date / 10000;
int month = date % 10000 / 100;
int day = date % 100;
if (!month || month >= 13 || !day) return false;
if (month != 2 && day > months[month]) return false;
if (month == 2) {
bool leap = year % 4 == 0 && year % 100 || year % 400 == 0;
if (day > 28 + leap) return false;
}
return true;
}
蓝桥杯真题: AcWing 1229. 日期问题
12.数组倒序排序
int array[5] = {3,100,45,2,0};
sort(array, array + 5,cmp1(int a, int b) {
return b > a;
});
//对vector用sort倒序排序
sort(a.begin(), b.end(), greater<int>());
auto能用吗
已收藏