考试注意点

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

 

posted @ 2025-08-10 20:18  最近饭吃的很多  阅读(6)  评论(0)    收藏  举报