当前位置: 首页 > news >正文

LeetCode数学相关算法题(1)【C语言版】

2520. 统计能整除数字的位数

给你一个整数 num ,返回 num 中能整除 num 的数位的数目。

如果满足 nums % val == 0 ,则认为整数 val 可以整除 nums 。

示例 1:

输入:num = 7
输出:1
解释:7 被自己整除,因此答案是 1 。

示例 2:

输入:num = 121
输出:2
解释:121 可以被 1 整除,但无法被 2 整除。由于 1 出现两次,所以返回 2 。

示例 3:

输入:num = 1248
输出:4
解释:1248 可以被它每一位上的数字整除,因此答案是 4 。
```
#include <cstdio>// 函数:计算整数 num 中有多少个数位能够整除 num
int countDigits(int num) {int temp = num; // 用于操作的临时变量,避免直接修改 numint n = 0;      // 用于存储当前数位的值int count = 0;  // 用于计数,记录能整除 num 的数位个数// 遍历整数 num 的每一位数字while (temp != 0) {n = temp % 10; // 提取 temp 的最低位数字if (n != 0 && num % n == 0) { // 检查当前数位是否能整除 numcount++; // 如果能整除,计数器加1}temp /= 10; // 去掉 temp 的最低位数字,继续处理下一位}return count; // 返回计数结果
}int main() {// 测试函数,输入 num = 121printf("%d", countDigits(121)); // 输出结果return 0;
}
```

 2469. 温度转换

给你一个四舍五入到两位小数的非负浮点数 celsius 来表示温度,以 摄氏度Celsius)为单位。

你需要将摄氏度转换为 开氏度Kelvin)和 华氏度Fahrenheit),并以数组 ans = [kelvin, fahrenheit] 的形式返回结果。

返回数组 ans 。与实际答案误差不超过 10-5 的会视为正确答案

注意:

  • 开氏度 = 摄氏度 + 273.15
  • 华氏度 = 摄氏度 * 1.80 + 32.00

示例 1 :

输入:celsius = 36.50
输出:[309.65000,97.70000]
解释:36.50 摄氏度:转换为开氏度是 309.65 ,转换为华氏度是 97.70 。

示例 2 :

输入:celsius = 122.11
输出:[395.26000,251.79800]
解释:122.11 摄氏度:转换为开氏度是 395.26 ,转换为华氏度是 251.798 。
```
#include <cstdio>  // 包含标准输入输出库
#include <cstdlib> // 包含动态内存分配和释放的函数// 函数:将摄氏温度转换为开尔文温度和华氏温度
// 参数:
//   celsius:摄氏温度
//   returnSize:指向一个整数的指针,用于存储返回数组的大小
// 返回值:
//   返回一个指向动态分配的数组的指针,数组包含两个元素:开尔文温度和华氏温度
double* convertTemperature(double celsius, int* returnSize) {// 计算开尔文温度:摄氏温度 + 273.15double kelvin = celsius + 273.15;// 计算华氏温度:摄氏温度 * 1.80 + 32.00double fahrenheit = celsius * 1.80 + 32.00;// 为结果数组分配内存,数组包含两个double类型的元素double* ans = (double*)malloc(2 * sizeof(double));// 检查内存分配是否成功if (ans == NULL) {printf("Memory allocation failed.\n"); // 如果失败,输出错误信息exit(1); // 退出程序}// 将计算结果存储到动态分配的数组中ans[0] = kelvin;           // 存储开尔文温度ans[1] = fahrenheit;       // 存储华氏温度// 设置返回数组的大小,这里返回的数组包含两个元素*returnSize = 2;// 返回指向动态分配数组的指针return ans;
}int main() {int returnSize;            // 用于存储返回数组的大小double celsius;            // 用于存储用户输入的摄氏温度// 提示用户输入摄氏温度printf("Enter temperature in Celsius: ");// 从标准输入读取摄氏温度scanf("%lf", &celsius);// 调用函数,将摄氏温度转换为开尔文和华氏温度// returnSize用于存储返回数组的大小double* p = convertTemperature(celsius, &returnSize);// 遍历返回的数组并输出结果for (int i = 0; i < returnSize; ++i) {printf("%.2f\n", p[i]); // 输出结果,保留两位小数}// 释放动态分配的内存,避免内存泄漏free(p);return 0; // 程序正常结束
}
```

2160. 拆分数位后四位数字的最小和

给你一个四位  整数 num 。请你使用 num 中的 数位 ,将 num 拆成两个新的整数 new1 和 new2 。new1 和 new2 中可以有 前导 0 ,且 num 中 所有 数位都必须使用。

  • 比方说,给你 num = 2932 ,你拥有的数位包括:两个 2 ,一个 9 和一个 3 。一些可能的 [new1, new2] 数对为 [22, 93][23, 92][223, 9] 和 [2, 329] 。

请你返回可以得到的 new1 和 new2 的 最小 和。

示例 1:

输入:num = 2932
输出:52
解释:可行的 [new1, new2] 数对为 [29, 23] ,[223, 9] 等等。
最小和为数对 [29, 23] 的和:29 + 23 = 52 。

示例 2:

输入:num = 4009
输出:13
解释:可行的 [new1, new2] 数对为 [0, 49] ,[490, 0] 等等。
最小和为数对 [4, 9] 的和:4 + 9 = 13 
```
#include <cstdio>// 函数:计算使用 num 中的数位可以得到的最小和
int minimumSum(int num) {int t = num; // 用于操作的临时变量,避免直接修改 numint arr[4] = {0}; // 定义一个大小为4的数组,用于存储拆分后的数位// 从最低位开始提取 num 的每一位数字,并存储到数组中for (int i = 0; i < 4; ++i) {arr[4 - 1 - i] = t % 10; // 提取最低位数字并存储到数组的对应位置t /= 10; // 去掉最低位数字}// 对数组进行排序,使用插入排序算法int high, low, mid, temp;for (int i = 1; i < 4; ++i) { // 从第二个元素开始遍历数组low = 0; // 定义查找范围的下界high = i - 1; // 定义查找范围的上界temp = arr[i]; // 保存当前需要插入的元素// 使用二分查找确定当前元素应该插入的位置while (low <= high) {mid = (low + high) / 2; // 计算中间位置if (arr[mid] > temp) { // 如果中间位置的元素大于当前元素high = mid - 1; // 调整上界} else {low = mid + 1; // 调整下界}}// 将从插入位置开始到当前元素位置的所有元素向后移动一位for (int j = i - 1; j >= low; --j) {arr[j + 1] = arr[j];}// 将当前元素插入到正确的位置arr[low] = temp;}// 构造两个新的整数,使得它们的和最小// 选择最小的两个数位作为十位数,剩下的两个数位作为个位数int num1 = arr[0] * 10 + arr[2]; // 构造第一个整数int num2 = arr[1] * 10 + arr[3]; // 构造第二个整数// 返回两个整数的和return num1 + num2;
}int main() {// 测试函数,输入 num = 4009printf("%d", minimumSum(4009)); // 输出结果return 0;
}
```

2413. 最小偶倍数

给你一个正整数 n ,返回 2  n 的最小公倍数(正整数)。

示例 1:

输入:n = 5
输出:10
解释:5 和 2 的最小公倍数是 10 。

示例 2:

输入:n = 6
输出:6
解释:6 和 2 的最小公倍数是 6 。注意数字会是它自身的倍数。
#include <cstdio>int smallestEvenMultiple(int n) {if (n%2 == 0){return n;} else{return 2*n;}
}int main(){printf("%d",smallestEvenMultiple(121));
}

1688. 比赛中的配对次数

给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:

  • 如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2 支队伍进入下一轮。
  • 如果当前队伍数为 奇数 ,那么将会随机轮空并晋级一支队伍,其余的队伍配对。总共进行 (n - 1) / 2 场比赛,且产生 (n - 1) / 2 + 1 支队伍进入下一轮。

返回在比赛中进行的配对次数,直到决出获胜队伍为止。

示例 1:

输入:n = 7
输出:6
解释:比赛详情:
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 3 + 2 + 1 = 6

示例 2:

输入:n = 14
输出:13
解释:比赛详情:
- 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。
- 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。 
- 第 3 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 4 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 7 + 3 + 2 + 1 = 13
#include <cstdio>// 函数:计算在一场锦标赛中总共进行了多少场比赛
// 参数:
//   n:参赛队伍的数量
// 返回值:
//   比赛的总场数
int numberOfMatches(int n) {int temp = n; // 用于操作的临时变量,避免直接修改 nint count = 0; // 用于计数,记录比赛的总场数// 当参赛队伍数量大于1时,继续比赛while (temp != 1) {// 如果当前队伍数量是偶数if (temp % 2 == 0) {temp = temp / 2; // 每场比赛淘汰一半的队伍count += temp; // 累加比赛场数} else {// 如果当前队伍数量是奇数int n = (temp - 1) / 2; // 计算需要进行的比赛场数temp = temp - n; // 淘汰一半的队伍(向下取整)count += n; // 累加比赛场数}}return count; // 返回比赛的总场数
}int main() {// 测试函数,输入 n = 14printf("%d", numberOfMatches(14)); // 输出结果return 0;
}

1281. 整数的各位积和之差

给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。

示例 1:

输入:n = 234
输出:15 
解释:
各位数之积 = 2 * 3 * 4 = 24 
各位数之和 = 2 + 3 + 4 = 9 
结果 = 24 - 9 = 15

示例 2:

输入:n = 4421
输出:21
解释: 
各位数之积 = 4 * 4 * 2 * 1 = 32 
各位数之和 = 4 + 4 + 2 + 1 = 11 
结果 = 32 - 11 = 21
#include <cstdio>// 函数:计算整数 n 的各位数字之积与各位数字之和的差
int subtractProductAndSum(int n) {int temp = n; // 用于操作的临时变量,避免直接修改 nint sum = 0;  // 用于存储各位数字之和int ji = 1;   // 用于存储各位数字之积,初始化为1(乘法的单位元)// 遍历整数 n 的每一位数字while (temp != 0) {int m = temp % 10; // 获取当前最低位的数字sum += m;          // 将当前数字加到 sum 中ji *= m;           // 将当前数字乘到 ji 中temp /= 10;        // 去掉当前最低位数字,继续处理下一位}// 返回各位数字之积与各位数字之和的差return ji - sum;
}int main() {// 测试函数,输入 n = 4421printf("%d", subtractProductAndSum(4421)); // 输出结果return 0;
}

2427. 公因子的数目

给你两个正整数 a 和 b ,返回 a 和 b 的  因子的数目。

如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。

示例 1:

输入:a = 12, b = 6
输出:4
解释:12 和 6 的公因子是 1、2、3、6 。

示例 2:

输入:a = 25, b = 30
输出:2
解释:25 和 30 的公因子是 1、5 。
#include <cstdio>// 函数:计算两个正整数 a 和 b 的公因数个数
int commonFactors(int a, int b) {int count = 0; // 用于计数公因数的个数// 遍历从1到较小数的所有整数for (int i = 1; i <= a && i <= b; ++i) {// 检查 i 是否是 a 和 b 的公因数if (a % i == 0 && b % i == 0) {count++; // 如果是公因数,计数器加1}}return count; // 返回公因数的个数
}int main() {// 测试函数,输入 a = 25 和 b = 30printf("%d", commonFactors(25, 30)); // 输出结果return 0;
}

728. 自除数

自除数 是指可以被它包含的每一位数整除的数。

  • 例如,128 是一个 自除数 ,因为 128 % 1 == 0128 % 2 == 0128 % 8 == 0

自除数 不允许包含 0 。

给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right](包括两个端点)内所有的 自除数 。

示例 1:

输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

示例 2:

输入:left = 47, right = 85
输出:[48,55,66,77]
#include <stdio.h>
#include <stdlib.h>// 函数:找出一个范围内所有的自除数
// 参数:
//   left:范围的起始值
//   right:范围的结束值
//   returnSize:返回数组的大小
// 返回值:
//   指向动态分配数组的指针,数组包含范围内的所有自除数
int* selfDividingNumbers(int left, int right, int* returnSize) {int count = 0; // 用于计数自除数的数量int* arr = (int*)malloc((right - left + 1) * sizeof(int)); // 分配足够的内存空间// 遍历范围内的每一个数字for (int i = left; i <= right; ++i) {int temp = i; // 用于操作的临时变量,避免直接修改 ibool flag = true; // 标志位,用于判断当前数字是否为自除数// 检查当前数字的每一位是否满足自除数的条件while (temp != 0) {int digit = temp % 10; // 提取最低位数字if (digit == 0 || i % digit != 0) { // 如果当前位为0或不能整除flag = false; // 设置标志位为 falsebreak; // 退出循环}temp /= 10; // 去掉最低位数字}// 如果当前数字是自除数if (flag) {arr[count++] = i; // 将其存储到数组中,并更新计数器}}*returnSize = count; // 设置返回数组的大小return arr; // 返回指向动态分配数组的指针
}int main() {int returnSize = 0; // 用于存储返回数组的大小int* arr = selfDividingNumbers(1, 22, &returnSize); // 调用函数,获取自除数数组// 打印结果for (int i = 0; i < returnSize; ++i) {printf("%d ", arr[i]);}printf("\n");free(arr); // 释放动态分配的内存return 0;
}

2119. 反转两次的数字

反转 一个整数意味着倒置它的所有位。

  • 例如,反转 2021 得到 1202 。反转 12300 得到 321 ,不保留前导零 。

给你一个整数 num ,反转 num 得到 reversed1 ,接着反转 reversed1 得到 reversed2 。如果 reversed2 等于 num ,返回 true ;否则,返回 false 。

示例 1:

输入:num = 526
输出:true
解释:反转 num 得到 625 ,接着反转 625 得到 526 ,等于 num 。

示例 2:

输入:num = 1800
输出:false
解释:反转 num 得到 81 ,接着反转 81 得到 18 ,不等于 num 。 

示例 3:

输入:num = 0
输出:true
解释:反转 num 得到 0 ,接着反转 0 得到 0 ,等于 num 。
#include <stdio.h>// 函数:判断一个整数在两次反转后是否与原数相同
bool isSameAfterReversals(int num) {// 如果 num 为 0,两次反转后仍然是 0,满足条件// 如果 num 的最后一位不是 0,那么两次反转后不会丢失任何数字,也满足条件// 如果 num 的最后一位是 0,第一次反转后会丢失这个 0,第二次反转后无法恢复,不满足条件return num == 0 || num % 10 != 0;
}int main() {// 测试函数,输入 num = 1800bool flag = isSameAfterReversals(1800); // 调用函数,判断 1800 是否满足条件// 根据返回值输出结果if (flag) {printf("true");} else {printf("false");}return 0;
}

509. 斐波那契数

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1

给定 n ,请计算 F(n) 。

示例 1:

输入:n = 2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1

示例 2:

输入:n = 3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2

示例 3:

输入:n = 4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3
#include <stdio.h>// 函数:计算斐波那契数列的第 n 项
// 斐波那契数列定义:
// F(0) = 0, F(1) = 1
// F(n) = F(n-1) + F(n-2) for n > 1
int fib(int n) {// 基础情况:F(0) = 0if (n == 0) {return 0;}// 基础情况:F(1) = 1if (n == 1) {return 1;}// 递归情况:F(n) = F(n-1) + F(n-2)return fib(n - 1) + fib(n - 2);
}int main() {// 测试函数,计算斐波那契数列的第 4 项printf("%d", fib(4)); // 输出结果return 0;
}

70. 爬楼梯😱

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1. 1 阶 + 1 阶
2. 2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1. 1 阶 + 1 阶 + 1 阶
2. 1 阶 + 2 阶
3. 2 阶 + 1 阶

有点难看视频:带你学透动态规划-爬楼梯(对应力扣70.爬楼梯)| 动态规划经典入门题目_哔哩哔哩_bilibili

#include <stdio.h>int climbStairs(int n) {// 特殊情况处理:如果只有 1 级台阶,只有一种方法if (n == 1) {return 1;}// 特殊情况处理:如果有 2 级台阶,有两种方法(1+1 或 2)if (n == 2) {return 2;}// 动态规划数组 arr,用于存储到达每一级台阶的方法数int arr[n];// 初始化数组的前两个元素arr[0] = 1; // 只有1种方法到达第1级台阶(1步)arr[1] = 2; // 有2种方法到达第2级台阶(1+1步 或 2步)// 动态规划:从第3级台阶开始,每一级台阶的方法数等于前两级台阶的方法数之和for (int i = 2; i < n; ++i) {arr[i] = arr[i - 1] + arr[i - 2]; // 当前级数的方法数 = 前一级数的方法数 + 前两级数的方法数}// 返回到达第 n 级台阶的方法数return arr[n - 1];
}int main() {// 测试函数,计算爬 3 级台阶的方法数printf("%d", climbStairs(3)); // 输出结果return 0;
}

7. 整数反转 (中)

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0
#include <stdio.h>
#include <limits.h> // 包含 INT_MAX 和 INT_MIN 的定义int reverse(int x) {int reversed = 0;while (x != 0) {int pop = x % 10; // 取最后一位x /= 10; // 去掉最后一位// 检查是否会导致溢出if (reversed > INT_MAX / 10 || (reversed == INT_MAX / 10 && pop > 7)) {return 0; // 正数溢出}if (reversed < INT_MIN / 10 || (reversed == INT_MIN / 10 && pop < -8)) {return 0; // 负数溢出}reversed = reversed * 10 + pop; // 累加到反转结果中}return reversed;
}int main() {printf("%d\n", reverse(-2147483412)); // 输出: 0 (溢出)return 0;
}

 原来反转不需要计算位数啊!!!之前的错误的写法就不展示了!这道题是AI写的我是在是没写出来!

在计算机中,整数类型(如 int)有一个固定的位数(通常是 32 位),因此它能够表示的范围是有限的。对于 32 位的有符号整数 int,其范围是 -2,147,483,648 到 2,147,483,647。如果计算结果超出了这个范围,就会发生溢出。

        // 检查是否会导致溢出if (reversed > INT_MAX / 10 || (reversed == INT_MAX / 10 && pop > 7)) {return 0; // 正数溢出}
  • INT_MAX / 10 是 214748364,即 INT_MAX 除以 10。
  • pop 是当前要添加到 reversed 的个位数。

这段代码的意思是:

  • 如果 reversed 已经大于 INT_MAX / 10,那么再乘以 10 并加上 pop 肯定会溢出。
  • 如果 reversed 等于 INT_MAX / 10,那么只有当 pop 大于 7 时才会溢出(因为 INT_MAX 的个位数是 7)。假设2,147,483,645个位数是5也是没有溢出哦。
        if (reversed < INT_MIN / 10 || (reversed == INT_MIN / 10 && pop < -8)) {return 0; // 负数溢出}
  • INT_MIN / 10 是 -214748364,即 INT_MIN 除以 10。

这段代码的意思是:

  • 如果 reversed 已经小于 INT_MIN / 10,那么再乘以 10 并加上 pop 肯定会溢出。
  • 如果 reversed 等于 INT_MIN / 10,那么只有当 pop 小于 -8 时才会溢出(因为 INT_MIN 的个位数是 -8)。

231. 2 的幂 

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2^{_{x}} ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1
输出:true
解释:2^{0}= 1

示例 2:

输入:n = 16
输出:true
解释:2^{_{4}} = 16

示例 3:

输入:n = 3
输出:false

第一种对但是超时了!


bool isPowerOfTwo(int n) {// 如果 n 等于 1,说明它是 2 的 0 次幂,返回 trueif (n == 1) {return true;}// 如果 n 是负数,不可能是 2 的幂,返回 falseif (n < 0) {return false;}// 如果 n 是奇数且不等于 1,不可能是 2 的幂,返回 falseif (n % 2 == 1) {return false;}// 递归调用,将 n 除以 2,继续判断return isPowerOfTwo(n / 2);
}

第二种是位运算,比较简单速度也快

bool isPowerOfTwo(int n) {if (n<=0){return false;}return (n&(n-1))==0;
}

一个数是 2 的幂,当且仅当它的二进制表示中只有 一个 1,且这个 1 出现在最高位。例如:

  • 1 的二进制是 1
  • 2的二进制是 10
  • 4 的二进制是 100
  • 8 的二进制是 1000

根据这个特性,我们可以通过以下方法判断一个数是否是 2 的幂:

  1. 如果 n≤0n≤0,直接返回 false,因为 2 的幂必须是正整数。
  2. 利用位运算 n & (n - 1)
    • 如果 n 是 2 的幂,则 n & (n - 1) 的结果为 0
    • 例如:8 的二进制是 1000,7 的二进制是 01111000 & 0111 = 0000

342. 4的幂

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4^{_{x}}

示例 1:

输入:n = 16
输出:true

示例 2:

输入:n = 5
输出:false

示例 3:

输入:n = 1
输出:true

提示:

  • -231 <= n <= 231 - 1
#include <cstdio>// 判断一个整数是否是 4 的幂
bool isPowerOfFour(int n) {// 如果 n 小于等于 0,直接返回 false// 因为 4 的幂必须是正整数if (n <= 0) {return false;}// 判断 n 是否是 2 的幂// 2 的幂的二进制表示中只有一个 1// 例如:1 (1), 2 (10), 4 (100), 8 (1000)// n & (n - 1) 会将最低位的 1 置为 0// 如果 n 是 2 的幂,则 n & (n - 1) == 0if ((n & (n - 1)) != 0) {return false;}// 判断 n 是否是 4 的幂// 4 的幂的二进制表示中,1 只出现在偶数位// 例如:4 (100), 16 (10000), 64 (1000000)// 0xAAAAAAAA 的二进制表示是 10101010...1010// 如果 n & 0xAAAAAAAA == 0,说明 n 的 1 只出现在偶数位return (0xAAAAAAAA & n) == 0;
}int main() {// 测试 isPowerOfFour 函数bool flag = isPowerOfFour(2);// 根据返回值输出结果if (flag) {puts("true");  // 如果是 4 的幂,输出 true} else {puts("false"); // 如果不是 4 的幂,输出 false}return 0;
}

判断 4 的幂的原理

4 的幂的二进制表示中,1 只出现在 奇数位。例如:

  • 4^{_{1}}=4,二进制是 1001 出现在位位置 2(偶数位)。
  • 4^{2}=16,二进制是 100001 出现在位位置 4(偶数位)。
  • 4^{3}=64,二进制是 10000001 出现在位位置 6(偶数位)。

4 的幂的二进制表示中,1 只出现在 偶数位。因此,我们可以通过以下步骤判断:

判断是否是 2 的幂

  • 4 的幂一定是 2 的幂,因此首先判断 n 是否是 2 的幂。
  • 2 的幂的判断方法:n > 0 && (n & (n - 1)) == 0

判断 1 是否出现在偶数位

  • 使用掩码 0xAAAAAAAA(二进制为 10101010...1010)提取偶数位。
  • 如果 n & 0xAAAAAAAA == 0,说明 1 只出现在偶数位。

0xaaaaaaaa = 10101010101010101010101010101010 (偶数位为1,奇数位为0)

0x55555555 = 1010101010101010101010101010101 (偶数位为0,奇数位为1)

0x33333333 = 110011001100110011001100110011 (1和0每隔两位交替出现)

0xcccccccc = 11001100110011001100110011001100 (0和1每隔两位交替出现)

0x0f0f0f0f = 00001111000011110000111100001111 (1和0每隔四位交替出现)

0xf0f0f0f0 = 11110000111100001111000011110000 (0和1每隔四位交替出现)

 326. 3 的幂

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:

输入:n = 27
输出:true

示例 2:

输入:n = 0
输出:false

示例 3:

输入:n = 9
输出:true

示例 4:

输入:n = 45
输出:false

直接使用的递归函数哈哈也通过了。


#include <cstdio>// 判断一个整数是否是 3 的幂
bool isPowerOfThree(int n) {// 如果 n 小于等于 0,直接返回 false// 因为 3 的幂必须是正整数if (n <= 0) {return false;}// 如果 n 等于 1,直接返回 true// 因为 3^0 = 1,1 是 3 的幂if (n == 1) {return true;}// 递归调用 isPowerOfThree(n / 3)// 判断 n 是否能被 3 整除,并且 n / 3 也是 3 的幂// 例如:// - 对于 n = 9:9 / 3 = 3,3 是 3 的幂,且 9 % 3 == 0,返回 true// - 对于 n = 10:10 / 3 = 3,3 是 3 的幂,但 10 % 3 != 0,返回 falsereturn isPowerOfThree(n / 3) && n % 3 == 0;
}int main() {// 测试 isPowerOfThree 函数bool flag = isPowerOfThree(45);// 根据返回值输出结果if (flag) {puts("true");  // 如果是 3 的幂,输出 true} else {puts("false"); // 如果不是 3 的幂,输出 false}return 0;
}

504. 七进制数

给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

示例 1:

输入: num = 100
输出: "202"

示例 2:

输入: num = -7
输出: "-10"

提示:

  • -107 <= num <= 107
#include <cstdio>
#include <cstdlib>// 数组元素逆置函数
void reverse(char* arr, int i) {char temp;// 遍历数组的前半部分,交换元素for (int j = 0; j < i / 2; ++j) {temp = arr[i - j - 1];  // 保存后半部分的元素arr[i - j - 1] = arr[j]; // 将前半部分的元素放到后半部分arr[j] = temp;          // 将保存的后半部分元素放到前半部分}
}// 将整数转换为 7 进制字符串
char* convertToBase7(int num) {// 动态分配一个字符数组,用于存储结果char* arr = (char*)malloc(100 * sizeof(char));int temp = num >= 0 ? num : (0 - num); // 取 num 的绝对值int i = 0; // 用于记录当前字符数组的索引// 如果 num 为 0,直接存储 '0'if (temp == 0) {arr[i++] = '0';}// 将 num 转换为 7 进制while (temp != 0) {int a = temp % 7; // 取当前位的值arr[i++] = a + '0'; // 将数字转换为字符并存储temp /= 7; // 继续处理下一位}// 如果 num 是负数,添加负号并逆置数组if (num < 0) {arr[i] = '-'; // 添加负号arr[i + 1] = '\0'; // 添加字符串结束符reverse(arr, i + 1); // 逆置数组} else {arr[i] = '\0'; // 添加字符串结束符reverse(arr, i); // 逆置数组}return arr; // 返回结果字符串
}int main() {// 测试 convertToBase7 函数char* p = convertToBase7(0);puts(p); // 输出结果// 释放动态分配的内存free(p);return 0;
}

263. 丑数

丑数 就是只包含质因数 23 和 5 的 正 整数。

给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:n = 6
输出:true
解释:6 = 2 × 3

示例 2:

输入:n = 1
输出:true
解释:1 没有质因数。

示例 3:

输入:n = 14
输出:false
解释:14 不是丑数,因为它包含了另外一个质因数 7。
#include <cstdio>// 判断一个整数是否是丑数
bool isUgly(int n) {// 如果 n 小于等于 0,直接返回 false// 因为丑数必须是正整数if (n <= 0) {return false;}// 如果 n 等于 1,直接返回 true// 1 没有质因数,通常认为 1 是丑数if (n == 1) {return true;}int temp = n; // 用 temp 保存 n 的值,避免直接修改 nint flag = 0; // 用于标记是否进行了除法操作// 不断将 temp 除以 2、3 和 5,直到 temp 不能被这些数整除while (temp != 0) {// 如果 temp 能被 2 整除,就除以 2if (temp % 2 == 0) {flag++; // 标记进行了除法操作temp /= 2;}// 如果 temp 能被 3 整除,就除以 3if (temp % 3 == 0) {flag++; // 标记进行了除法操作temp /= 3;}// 如果 temp 能被 5 整除,就除以 5if (temp % 5 == 0) {flag++; // 标记进行了除法操作temp /= 5;}// 如果 flag 为 0,说明 temp 不能被 2、3 或 5 整除,跳出循环if (flag == 0) {break;}flag = 0; // 重置 flag,继续下一轮循环}// 如果最终 temp 等于 1,说明 n 只包含质因数 2、3 和 5,是丑数// 否则,n 不是丑数return temp == 1;
}int main() {bool flag = isUgly(14);if (flag){puts("true");} else{puts("false");}
}
  • 如果 flag 为 0,说明 temp 不能被 2、3 或 5 整除,跳出循环。

191. 位1的个数

给定一个正整数 n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 

设置位的个数(也被称为汉明重量)。

示例 1:

输入:n = 11
输出:3
解释:输入的二进制串 1011 中,共有 3 个设置位。

示例 2:

输入:n = 128
输出:1
解释:输入的二进制串 10000000 中,共有 1 个设置位。

示例 3:

输入:n = 2147483645
输出:30
解释:输入的二进制串 1111111111111111111111111111101 中,共有 30 个设置位。

#include <stdio.h>// 计算一个整数的二进制表示中 1 的个数(汉明重量)
int hammingWeight(int n) {int temp = n; // 用 temp 保存 n 的值,避免直接修改 nint count = 0; // 用于记录 1 的个数// 不断将 temp 除以 2,直到 temp 变为 0while (temp != 0) {int a = temp % 2; // 取 temp 除以 2 的余数if (a == 1) { // 如果余数为 1,说明当前二进制位是 1count++; // 1 的个数加 1}temp /= 2; // 将 temp 右移一位,相当于除以 2}return count; // 返回 1 的个数
}int main() {// 测试 hammingWeight 函数hammingWeight(2147483645); // 2147483645 的二进制表示中有 30 个 1return 0;
}

476. 数字的补数

对整数的二进制表示取反(0 变 1 ,1 变 0)后,再转换为十进制表示,可以得到这个整数的补数。

  • 例如,整数 5 的二进制表示是 "101" ,取反后得到 "010" ,再转回十进制表示得到补数 2 。

给你一个整数 num ,输出它的补数。

    示例 1:

    输入:num = 5
    输出:2
    解释:5 的二进制表示为 101(没有前导零位),其补数为 010。所以你需要输出 2 。
    

    示例 2:

    输入:num = 1
    输出:0
    解释:1 的二进制表示为 1(没有前导零位),其补数为 0。所以你需要输出 0 。
    #include <cstdio>
    #include <cmath>// 找到一个整数的补数
    int findComplement(int num) {int temp = num; // 用 temp 保存 num 的值,避免直接修改 numint sum = 0;    // 用于存储补数的结果int a, b;       // a 用于存储当前二进制位,b 用于存储补数位int i = 0;      // 用于记录当前位的权重(2^i)// 不断将 temp 除以 2,直到 temp 变为 0while (temp != 0) {a = temp % 2; // 取 temp 除以 2 的余数,即当前二进制位b = a == 1 ? 0 : 1; // 计算补数位:如果 a 是 1,补数位是 0;否则是 1sum += b * pow(2, i++); // 将补数位乘以 2^i 并累加到 sum 中temp /= 2; // 将 temp 右移一位,相当于除以 2}return sum; // 返回补数的结果
    }int main() {// 测试 findComplement 函数printf("%d ", findComplement(1)); // 输出 1 的补数return 0;
    }

    461. 汉明距离

    两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

    给你两个整数 x 和 y,计算并返回它们之间的汉明距离。

    示例 1:

    输入:x = 1, y = 4
    输出:2
    解释:
    1   (0 0 0 1)
    4   (0 1 0 0)↑   ↑
    上面的箭头指出了对应二进制位不同的位置。
    

    示例 2:

    输入:x = 3, y = 1
    输出:1
    
    #include <cstdio>
    #include <cmath>// 计算两个整数之间的汉明距离
    int hammingDistance(int x, int y) {int a = x ^ y; // 对 x 和 y 进行异或运算,得到 aint n, count = 0; // n 用于存储 a 的二进制位,count 用于记录 1 的个数// 不断将 a 除以 2,直到 a 变为 0while (a != 0) {n = a % 2; // 取 a 除以 2 的余数,即当前二进制位if (n == 1) { // 如果当前二进制位是 1count++; // 1 的个数加 1}a /= 2; // 将 a 右移一位,相当于除以 2}return count; // 返回 1 的个数,即汉明距离
    }int main() {// 测试 hammingDistance 函数printf("%d ", hammingDistance(3, 1)); // 输出 3 和 1 之间的汉明距离return 0;
    }

    异或运算

    • 对 x 和 y 进行异或运算,得到 a
    • 异或运算的特性是:如果两个位相同,结果为 0;如果两个位不同,结果为 1
    • 因此,a 的二进制表示中,1 的个数就是 x 和 y 的汉明距离。

    相关文章:

    LeetCode数学相关算法题(1)【C语言版】

    2520. 统计能整除数字的位数 给你一个整数 num &#xff0c;返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 &#xff0c;则认为整数 val 可以整除 nums 。 示例 1&#xff1a; 输入&#xff1a;num 7 输出&#xff1a;1 解释&#xff1a;7 被自己整除&…...

    云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维

    如今&#xff0c;消息队列已成为分布式架构中不可或缺的关键服务&#xff0c;为电商、物联网、游戏和教育等行业&#xff0c;提供了异步解耦、集成、高性能和高可靠的核心价值。 过去一年&#xff0c;我们发布了云消息队列 ApsaraMQ 全系列产品 Serverless 化&#xff0c;面向…...

    github - 使用

    注册账户以及创建仓库 要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/。 之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。 Git…...

    cmos晶体管

    CMOS晶体管 一、PMOS和NMOS介绍 PN结&#xff1a; P-type和N-type组合在一起&#xff0c;变成一个PN结&#xff08;二极管&#xff09;。在P端给高电压&#xff0c;N端给低电压时&#xff0c;可以导通。否则不导通。 NMOS&#xff1a;有四个端口&#xff1a;gate、source、…...

    pip3命令全解析:Python3包管理工具的详细使用指南

    pip3命令全解析:Python3包管理工具的详细使用指南 一、基本使用二、升级和更新三、其他常用命令四、换源操作五、注意事项六、帮助信息pip3命令使用说明 pip3 是 Python 3 的包管理工具,用于安装、升级和卸载 Python 3 的包。以下是 pip3 的常用命令及详细说明: 一、基本使…...

    统计 product 表中 detail 字段包含 xxx 的产品数量

    您可以使用以下 SQL 查询语句来统计 product 表中 detail 字段包含 oss.kxlist.com 的产品数量&#xff1a; SELECT COUNT(*) FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;mysql> SELECT COUNT(*)-> FROM product-> WHERE INSTR(detail, oss.kxlist.co…...

    Kafka 集群原来是使用ZK管理,现在新版本是怎么管理的?

    目录 基于 ZooKeeper 的管理模式 基于 KRaft 的管理模式 迁移到 KRaft 模式的优势 迁移步骤 Kafka 早期依赖 ZooKeeper(ZK)进行元数据管理、集群协调等工作,但在新版本(Kafka 2.8.0 及之后)引入了 KRaft 模式来替代 ZooKeeper 进行管理。下面详细介绍这两种管理模式以…...

    【Java并发编程之什么是指令重排序?如何避免指令重排序?】

    Java并发编程之什么是指令重排序? 1.1 指令重排序的原因1.2 指令重排序的示例1.3 指令重排序的影响1.4 如何避免指令重排序带来的问题?1.5 使用原子类1.6 使用 final 关键字1.7 内存屏障(Memory Barrier)1.8 总结在Java中,指令重排序是指编译器和处理器为了提高程序执行效…...

    渲影医析Lab学术版

    渲影医析 Lab 是武汉渲影软件研发的框架式、模块化、流程化的影像组学分析设计软件&#xff0c;尤其适合处理多模态脑影像数据。通过将影像分析流程细分为可视化节点&#xff0c;并以节点连接的方式构建数据流程&#xff0c;赋予了临床医学研究者、生物医药科研工作者自主设计多…...

    利用Minio实现大文件分片上传、断点续传、秒传

    利用Minio实现大文件分片上传、断点续传、秒传 demo来自B站蜗牛哥&#xff0c;gitee仓库&#xff1a;minio-upload: 使用vue3 elementplus minio springboot 实现大文件的分片上传、断点续传、秒传的功能demo - Gitee.com 后端暴露端口方法 获取上传进度&#xff0c;identifier…...

    查出 product 表中所有 detail 字段包含 xxx 的完整记录

    您可以使用以下 SQL 查询语句来查出 product 表中所有 detail 字段包含 oss.kxlist.com 的完整记录&#xff1a; SELECT * FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;下面是detail字段包含的完整内容 <p><img style"max-width:100%;" src…...

    Linux系统编程之信号基础知识

    概述 信号是Linux系统中用于进程间通信的一种机制&#xff0c;允许一个进程通知另一个进程发生了某些特定事件。信号可以来自硬件中断、用户输入&#xff0c;也可以来自其他进程或者内核本身。信号是一种异步通知机制&#xff0c;当某个事件发生时&#xff0c;操作系统会向目标…...

    【C语言标准库函数】标准输入输出函数详解[4]:二进制文件读写函数

    目录 一、fread() 函数 1.1. 函数简介 1.2. fread 使用场景 1.3. 注意事项 1.4. 示例 二、fwrite() 函数 2.1. 函数简介 2.2. fwrite 使用场景 2.3. 注意事项 2.4. 示例 三、总结 在 C 语言中&#xff0c;二进制文件读写函数允许以二进制形式对文件进行读写操作&…...

    图像锐化(QT)

    如果不使用OpenCV&#xff0c;我们可以直接使用Qt的QImage类对图像进行像素级操作来实现锐化。锐化算法的核心是通过卷积核&#xff08;如拉普拉斯核&#xff09;对图像进行处理&#xff0c;增强图像的边缘和细节。 以下是一个完整的Qt应用程序示例&#xff0c;展示如何使用Qt…...

    Apache Kafka 消息清理之道

    前言 消息的清理是 MQ 中间件的基本能力&#xff0c;可以避免 MQ 的存储占用空间无序增长。与其他消息产品不同&#xff0c;Apache Kafka(以下简称 Kafka) 中 topic 上的消息被消费后不会被马上清除&#xff0c;而是由 topic 级别的清理策略来控制。本文将简要介绍 Kafka 中的…...

    JVM ①-类加载 || 内存区域

    这里是Themberfue 终于结束了网络层的学习&#xff0c;当然&#xff0c;我们学习的知识也只是冰山一角&#xff0c;想要了解更多的知识&#xff0c;还请大家养成主动探索的习惯~~~接下来我们将对 JVM 的一些机制进行简单的讲解&#xff0c;对于 Java程序员来说&#xff0c;本身…...

    物理信息机器学习(PIML)的基础探讨及技术实现

    在传统机器学习方法迅速发展并在图像识别、语音处理、自然语言处理等领域取得显著突破的同时,科学计算、工程设计以及自然系统建模等领域常常面临数据不足、噪声干扰以及模型泛化能力弱的问题。单纯依赖数据驱动的“黑箱”模型在处理物理问题时,往往难以兼顾数据拟合与物理解…...

    【浏览器多开】Google Chrome 谷歌浏览器分身术

    谷歌浏览器分身术&#xff08;多开&#xff09;&#xff1a; 复制已有谷歌浏览器图标—>右键–>属性的目标栏中&#xff0c;添加 --user-data-dir自定义文件夹路径 参数。 例如&#xff1a; C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…...

    《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)

    《A Practical Guide To Quantitative Finance Interviews》&#xff0c;被称为量化绿皮书&#xff0c;是经典的量化求职刷题书籍之一&#xff0c;包含以下七章&#xff1a; Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…...

    单片机成长之路(51基础篇) - 008 C51 的标示符和关键字

    标准 C 语言定义了 32 个关键字&#xff0c;如下表(ANSI C的32个关键字)&#xff1a; C51在此基础上针对单片机功能进行了扩展&#xff0c;详情见下表(C51编译器扩充关键字)&#xff1a; C 51的数据类型 51单片机使用的C语言的存储器类型分为以下几种&#xff1a;...

    嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

    2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…...

    Deno vs Node.js:性能对比深度解析

    1. 引言 Deno 和 Node.js 都是基于 V8 引擎的 JavaScript 运行时环境&#xff0c;然而它们在架构、模块管理、安全性和性能方面存在显著差异。Deno 由 Node.js 的原始作者 Ryan Dahl 开发&#xff0c;旨在解决 Node.js 设计上的一些问题&#xff0c;比如包管理、安全模型和 Ty…...

    【R】Dijkstra算法求最短路径

    使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data&#xff0c;存放有向图信息 data中每个点所在的行序号为起始点序号&#xff0c;列为终点序号。 比如&#xff1a;值4的坐标为(1,2)即点1到点2距离为4&#xff1b;值8的坐标为(6,7)…...

    网络安全治理架构图 网络安全管理架构

    网站安全攻防战 XSS攻击 防御手段&#xff1a; - 消毒。 因为恶意脚本中有一些特殊字符&#xff0c;可以通过转义的方式来进行防范 - HttpOnly 对cookie添加httpOnly属性则脚本不能修改cookie。就能防止恶意脚本篡改cookie 注入攻击 SQL注入攻击需要攻击者对数据库结构有所…...

    @emotion/styled / styled-components创建带有样式的 React 组件

    一、安装依赖 npm install emotion/styled styled-components 二、使用 import styled from emotion/styled; import styled from styled-components;// 创建一个带样式的按钮 const StyledButton styled.buttonbackground-color: #4caf50;color: white;padding: 10px 20px…...

    Gemini 2.0模型更新:谷歌最新AI大模型全面开启智能时代

    引言 2025年2月5日&#xff0c;谷歌人工智能实验室&#xff08;Google DeepMind&#xff09;发布了最新的Gemini 2.0模型系列更新&#xff0c;包括2.0 Flash、Flash-Lite和Pro实验版本。这些AI大模型的发布标志着人工智能技术在性能、效率和多模态能力上的进一步突破&#xff…...

    MySQL 主从复制原理及其工作过程

    一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器&#xff0c;并在从服务器上执行这些日志…...

    详解在Pytest中忽略测试目录的三种方法

    关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 你是否曾因无关或过时的代码导致测试失败&#xff1f; 这可能会增加调试和故障排除…...

    ZoneMinder index.php存在SQL注入漏洞(CVE-2024-43360)

    免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

    【DeepSeek】DeepSeek概述 | 本地部署deepseek

    目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型&#xff0c;以其…...

    webGL

    WebGL&#xff1a;3D图形的网络标准 WebGL&#xff08;Web Graphics Library&#xff09;是一种3D绘图协议&#xff0c;它允许开发者在不需要任何插件的情况下&#xff0c;在网页浏览器中创建交互式2D和3D效果。WebGL是基于OpenGL ES的JavaScript API&#xff0c;它可以为HTML5…...

    电脑远程控制vivo手机,切换按钮就能让vivo仅投屏、不受控制!

    Linux系统在全球的市场份额并不高&#xff0c;继而很多便捷的软件都没有Linux的版本。如果想要用Linux远程控制安卓手机&#xff0c;找软件会比较麻烦&#xff0c;但是AirDroid网页版可以做到。 以vivo手机为例子&#xff0c;接下来讲解Linux系统电脑要远程控制安卓手机时&…...

    MS17-010(永恒之蓝1.0)漏洞远程控制win7系统操作实战小白通俗易懂

    1.准备环境win7操作系统&#xff08;被攻击机&#xff09;以及kali系统&#xff08;攻击机&#xff09;&#xff0c;kali使用msf工具进行攻击。 2.打开kali终端&#xff0c;进入msf&#xff0c;输入msfconsole然后等待启动。 ┌──(root㉿kali-chifan)-[~] └─# msfconsole…...

    【Java计算机毕业设计】基于Springboot+Vue社区志愿者管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】

    源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…...

    三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信

    三次握手&#xff1a; 第一次握手&#xff1a;客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态​ 第二次握手&#xff1a;服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y&#xff0c;服务器进入SYN_RECV状态​ 第三次握手&#xff1a;客户端向服…...

    通讯录管理小程序

    通讯录管理系统 是对c基础语法的巩固&#xff0c;比较简单的一个小程序&#xff0c;重点在于养成良好的c代码习惯。 通讯录是一个可以记录亲人、好友信息的工具。 本教程主要利用C来实现一个通讯录管理系统 下面是一些需要实现的功能&#xff1a; 1. 添加联系人 功能描述&…...

    [ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别

    前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中&#xff0c;第三方库的使用是基于项目&#xff08;工程&#xff09;的。具体而言&#xff0c;只有当你为一个特定的项目添加了某个第三方库后&#xff0c;该项目才能使用该库。这些第三方库的文…...

    SpringSecurity:授权服务器与客户端应用(入门案例)

    文章目录 一、需求概述二、开发授权服务器1、pom依赖2、yml配置3、启动服务端 三、开发客户端应用1、pom依赖2、yml配置3、SecurityConfig4、接口5、测试 一、需求概述 maven需要3.6.0以上版本 二、开发授权服务器 1、pom依赖 <dependency><groupId>org.springfr…...

    k8s证书过期怎么更新?

    在 Kubernetes 集群中&#xff0c;证书过期可能导致集群不可用&#xff0c;尤其是 API Server、Controller Manager、Scheduler 等组件所使用的证书。为了恢复集群的正常运行&#xff0c;您需要更新这些证书。以下是更新 Kubernetes 证书的基本步骤&#xff1a; 1. 检查证书状…...

    【戒抖音系列】短视频戒除-1-对推荐算法进行干扰

    如今推荐算法已经渗透到人们生活的方方面面&#xff0c;尤其是抖音等短视频核心就是推荐算法。 【短视频的危害】 1> 会让人变笨&#xff0c;慢慢让人丧失注意力与专注力 2> 让人丧失阅读长文的能力 3> 让人沉浸在一个又一个快感与嗨点当中。当我们刷短视频时&#x…...

    VUE 集成企微机器人通知

    message-robot 便于线上异常问题及时发现处理&#xff0c;项目中集成企微机器人通知&#xff0c;及时接收问题并处理 企微机器人通知工具类 export class MessageRobotUtil {constructor() {}/*** 发送 markdown 消息* param robotKey 机器人 ID* param title 消息标题* param…...

    封装descriptions组件,描述,灵活

    效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...

    等级保护2.0|网络安全服务

    等级保护2.0|网络安全服务 定义 对于国家秘密信息、法人和其他组织及公民专有信息以及公开信息的存储、传输、处理这些信息系统分等级实行安全保护&#xff0c;对信息系统中发生的信息安全时间分等级响应、处置。 思想 对信息安全实行等级化保护和等级化管理 目标 突出重…...

    STM32 RTC亚秒

    rtc时钟功能实现&#xff1a;rtc模块在stm32内部&#xff0c;由电池或者主电源供电。如下图&#xff0c;需注意实现时仅需设置一次初始化。 1、stm32cubemx 代码生成界面设置&#xff0c;仅需开启时钟源和激活日历功能。 2、生成的代码,需要对时钟进行初始化&#xff0c;仅需…...

    H5+CSS+JS制作好看的轮播图

    先来看效果 点击下方按钮可以做到平滑切换轮播&#xff0c;轮播图片可以根据自定义随心变化。 先来看一下页面代码结构 <div class"container"><div class"lunbo-wrap"><div id"slide"></div><div class"butto…...

    Win10 部署llama Factory 推荐教程和遇到的问题

    教程 【大模型微调】使用Llama Factory实现中文llama3微调_哔哩哔哩_bilibili 大模型微调&#xff01;手把手带你用LLaMA-Factory工具微调Qwen大模型&#xff01;有手就行&#xff0c;零代码微调任意大语言模型_哔哩哔哩_bilibili 遇到问题解决办法 pytorch gpu国内镜像下载…...

    Visual Studio踩过的坑

    统计Unity项目代码行数 编辑-查找和替换-在文件中查找 查找内容输入 b*[^:b#/].*$ 勾选“使用正则表达式” 文件类型留空 也有网友做了指定&#xff0c;供参考 !*\bin\*;!*\obj\*;!*\.*\*!*.meta;!*.prefab;!*.unity 打开Unity的项目 注意&#xff1a;只是看&#xff0…...

    idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡

    idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下&#xff1a; 打开 IntelliJ IDEA&#xff1a; 打开你的 IntelliJ IDEA 应用…...

    Leetcode 3449. Maximize the Minimum Game Score

    Leetcode 3449. Maximize the Minimum Game Score 1. 解题思路2. 代码实现 题目链接&#xff1a;3449. Maximize the Minimum Game Score 1. 解题思路 这一题思路上就是一个二分法&#xff0c;尝试各个score&#xff0c;看看是否可以满足在给定的m次操作限制下&#xff0c;使…...

    DeepSeek深度思考:客户端(Android/iOS)架构设计指南

    目标读者&#xff1a;中高级开发者、架构师 适用场景&#xff1a;大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化&#xff08;Modularization&#xff09; 横向拆分&#xff1a;按功能边界划分&#xff08;如登录、支付、消息模块&#xff09;纵向…...