考试注意点
1.字符串转整形
stoll
2.数字转字符
static_cast<char>(i + '0')
3.n除以m 后向上取整
(n + m - 1)/m 或ceil(n/m)
4.二进制转十进制
long long binToDec(const string& bin) { long long res = 0; for (char c : bin) { res = res * 2 + (c - '0'); } return res; }
5.循环1到10
while(true){ int step = (round - 1) % 10 + 1; round++; }
6.变为二进制后1的个数
while(combined != 0){ //因为combined & (combined - 1) 可以消除最后一个 1, //所以可以用一个循环不停地消除 1 同时计数,直到 combined变成 0 为止。 combined = combined & (combined - 1); res++; }
7.判断字符是不是数字
string extractDigits(const string& str) { string result; for (char c : str) { if (isdigit(c)) { result += c; } } return result; }
isspace(c) |
判断是否是空白字符(空格、换行、制表符等) |
islower(c) |
是否是小写字母 |
isupper(c) |
是否是大写字母 |
8.保留小数点后几位
#include <stdio.h> int main() { double pi = 3.141592653589793; printf("保留 2 位小数: %.2f\n", pi); // 输出: 3.14 printf("保留 3 位小数: %.3f\n", pi); // 输出: 3.142 printf("保留 0 位小数: %.0f\n", pi); // 输出: 3 (四舍五入) printf("保留 5 位小数: %.5f\n", pi); // 输出: 3.14159 return 0; }
9.数组中最大的数
int min_val = *min_element(vec.begin(), vec.end()); int max_val = *max_element(vec.begin(), vec.end());
10.2的k次
(1)
int power = 1 << k; // 适用于 k >= 0 且 k < 31(int 范围)
(2)
#include <cmath>
double result = pow(2, k);//使用 pow(2, k)(浮点,适用于大 k)
(3)多次使用高效
vector<long long> pow2(64); pow2[0] = 1; for (int i = 1; i < 64; i++) { pow2[i] = pow2[i-1] * 2; } // 使用:pow2[k]
11.检查第i位是不是1
int op = (mask >> i) & 1; // 第i位是0还是1
浙公网安备 33010602011771号