【NOI】C++程序结构入门之循环结构三-计数求和

news2025/1/31 8:20:17

文章目录

  • 前言
  • 一、计数求和
    • 1.导入
    • 2.计数器
    • 3.累加器
  • 二、例题讲解
    • 问题:1741 - 求出1~n中满足条件的数的个数和总和?
    • 问题:1002. 编程求解1+2+3+...+n
    • 问题:1004. 编程求1 * 2 * 3*...*n
    • 问题:1014. 编程求1+1/2+1/3+...+1/n
    • 问题:1056. 所有不超过1000的数中含有数字3的自然数
    • 问题:1055. 求满足条件的整数个数
    • 问题:1393. 与7无关的数?
  • 三、总结
  • 四、感谢


前言

在C++编程的学习过程中,循环结构是一个非常重要的概念。通过前两节的学习,我们已经掌握了while循环和for循环的基本使用方法,并且学会了如何利用这些循环来输出一组符合条件的数。然而,在实际应用中,仅仅输出这些数是不够的。很多时候我们需要进一步处理这些数据,例如统计出符合条件的数的数量以及计算它们的总和。这就是本章节的重点——循环计数求和。我们将深入探讨如何使用计数器和累加器来实现这一目标,并通过具体的实例帮助大家更好地理解和掌握这些技巧。

学习路线:C++从入门到NOI学习路线

学习大纲:C++全国青少年信息学奥林匹克竞赛(NOI)入门级-大纲


一、计数求和

1.导入

在前两节中,我们学习了两种不同的循环结构——while循环和for循环。

并学会了在一组数字中,如何输出多个符合条件的数。

在这里插入图片描述

让你统计出这些符合条件的数的数量是多少?并且计算出它们的你会吗?

这就是我们今天需要学习处理的问题——循环计数求和。

2.计数器

首先我们需要知道一个关于计数器的概念,什么是计数器?

计数器用于跟踪循环执行的次数或某些事件发生的频率。它通常从一个初始值开始,在每次满足特定条件时递增或递减。

哇,好复杂,感觉要长脑子了QAQ

在这里插入图片描述

其实并没有那么复杂,大家可以想想比赛用的计时器。
在这里插入图片描述

当按下开始键,时间每过去一秒,计时器就会加1。同理,在我们程序里面,当满足条件时,我们也将计数器+1。

示例

int c=0	//定义一个计数器,并初始化为0
for(int i=1;i<=20;++i){	//循环1-20的数
	if(i%2==0){	//判断当前数是否是偶数
		++c;	//如何是偶数,则将计数器+1
	}
}

上面代码中就演示了如何统计1-20中偶数的数量。

看见没,就是这样简单。

3.累加器

接下来,让我们来了解一下求和的部分。

累加器用来累积一系列数值的总和。在每次迭代中,将当前数值添加到累加器中,从而实现对多个数值的求和。

说到这里,大家脑子里面肯定想到了计算器这个东西。

在这里插入图片描述

没错,我们的累加器基于相当于是一个会自己按的计算器。当然这里的累加器也可以包括加减乘除等一系列操作,只是一般用来求和而已。

示例

int sum=0	//定义一个累加器,并初始化为0
for(int i=1;i<=20;++i){	//循环1-20的数
	sum+=i; //累计计算1-20的和
}

依然是一段很简单的代码,循环1-20的每一个数,然后将它们累计相加。

但这里有的人可能会有一点小问题。

1.问题一:sum+=i是什么意思?

  • 在C++编程中,sum += i; 是一种简洁的写法,用来表示将变量 i 的值加到变量 sum 上,并将结果存回 sum 中。这实际上是一个复合赋值操作符的例子,它结合了加法运算和赋值操作。
  • sum += i 可以理解为 sum = sum + i。

2.问题二:为什么sum=sum+i就是累加?

  • 模拟计算器过程:想象你正在使用一个计算器来连续相加几个数字。每次你输入一个新的数并按下“等于”键时,计算器会显示当前所有已输入数值的总和。
  • 累加器的角色:在这个过程中,sum 就像是计算器上的显示屏,它保存了到目前为止所有已添加数值的总和。而 i 则代表当前要加入的新值。
  • 每一步的更新:在语句 sum = sum + i; 中,右边的 sum 表示的是上一次累加后的结果(也就是当前的总和),而 + i 是指现在要加到总和上去的新值。执行这行代码之后,新的总和就会被计算出来,并通过赋值操作(=)更新到左边的 sum 变量中。
  • 循环中的累加:当这条语句位于一个循环体内时,随着循环的每一次迭代,i 的值会发生变化,代表着不同的新值。每次执行 sum = sum + i; 都是在前一次总和的基础上再加上新的值,从而实现了累加的效果。最终,sum 将包含所有数值的总和。

二、例题讲解

问题:1741 - 求出1~n中满足条件的数的个数和总和?

类型:简单循环


题目描述:

请求出 1∼n 之间所有满足 2 的倍数但不是 3 的倍数的数,有多少个,总和是多少?

输入:

读入一个整数 n(n≤100000) 。

输出:

输出有 2 行,每行 1 个整数;
第 1 行输出满足条件的数有几个;
第 2 行输出满足条件的数的总和。

样例:

输入:

10

输出:

4
24

1.分析问题

  1. 已知:给定一个整数n;
  2. 未知:找出1到n之间所有满足既是2的倍数但又不是3的倍数的数。需要计算满足条件的数的总数(记为c)以及这些数的总和(记为s)。

2.定义变量

  • n为输入值,count记录满足条件的数的数量,sum记录这些数的总和。
 // 二、数据定义
    int n, count = 0, sum = 0;

3.输入数据

  • 从用户处获取整数n的值。
    // 三、数据输入
    cin >> n; 

4.数据计算

  • 从2开始,每次递增2(确保是2的倍数),直到n(包含n)。
  • 检查当前数i是否不是3的倍数。
  • 如果i不是3的倍数,则计数加1,并将其累加到总和中
    // 四、数据处理与计算

    for (int i = 2; i <= n; i += 2) {

        if (i % 3 != 0) {

            count++; // 或者使用 ++count
            sum += i;
        }
    }

5.输出结果

  • 输出满足条件的数的总数和总和,中间用换行符分隔
    cout << count << endl << sum;

完整代码如下:

#include <bits/stdc++.h> // 包含常用的C++库函数
using namespace std; // 使用std命名空间,简化对标准库函数的调用

int main() {
    // 一、问题分析
    // 给定一个整数n,找出1到n之间所有满足既是2的倍数但又不是3的倍数的数。
    // 需要计算满足条件的数的总数(记为c)以及这些数的总和(记为s)。

    // 二、数据定义
    int n, count = 0, sum = 0; // n为输入值,count记录满足条件的数的数量,sum记录这些数的总和

    // 三、数据输入
    cin >> n; // 从用户处获取整数n的值

    // 四、数据处理与计算
    // 从2开始,每次递增2(确保是2的倍数),直到n(包含n)
    for (int i = 2; i <= n; i += 2) {
        // 检查当前数i是否不是3的倍数
        if (i % 3 != 0) {
            // 如果i不是3的倍数,则计数加1,并将其累加到总和中
            count++; // 或者使用 ++count
            sum += i;
        }
    }

    // 五、输出结果
    // 输出满足条件的数的总数和总和,中间用换行符分隔
    cout << count << endl << sum;

    return 0; // 程序执行成功,返回0
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1002. 编程求解1+2+3+…+n

类型:简单循环


题目描述:

编程求解下列式子的值: S=1+2+3+⋯+n。

输入:

输入一行,只有一个整数 n(1≤n≤1000) 。

输出:

输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。

样例:

输入:

100

输出:

5050

1.分析问题

  1. 已知:一个整数n;
  2. 未知:计算出1-n中所有数的和;
  3. 关系:计数求和。

2.定义变量

  • n - 存储用户输入的上限;
  • sum - 累加器,初始化为0,用来累计从1到n的整数之和。
int n,sum=0; 

3.输入数据

  • 输入整数n。
cin>>n;

4.数据计算

  • 开始一个循环,从1遍历到n(包括n)。
  • 在每次循环中,将当前的i累加到sum中。
for(int i=1;i<=n;i++){
		sum+=i;
}

5.输出

  • 输出结果sum。
cout << sum << endl;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:整数n。
    //未知:前n项和。
    //关系:累加。

    //二、数据定义 
    int n, sum = 0;      // 定义两个整型变量:
                         // n - 存储用户输入的上限;
                         // sum - 累加器,初始化为0,用来累计从1到n的整数之和。

    //三、数据输入
    cin >> n;            // 从标准输入读取一个整数n,表示累加的上限。

    //四、数据计算 
    for(int i = 1; i <= n; ++i){  // 开始一个循环,从1遍历到n(包括n)。
        sum += i;                 // 在每次循环中,将当前的i累加到sum中。
    }

    //五、输出结果
    cout << sum << endl;          // 输出累加的结果,并换行。
    
    return 0;                     // 主函数结束,返回0给操作系统,表示程序正常结束。
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1004. 编程求1 * 2 * 3*…*n

类型:简单循环


题目描述:

编程求 1×2×3×⋯×n 。

输入:

输入一行,只有一个整数 n(1≤n≤10);

输出:

输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。

样例:

输入:

5

输出:

120

1.分析问题

  1. 已知:一个整数n;
  2. 未知:编程求 n的阶乘。
  3. 关系:n 的阶乘定义为从 1 到 n 所有整数的乘积,表示为 n! = 1 * 2 * … * n。

2.定义变量

定义两个整型变量:

  • n - 存储用户输入的整数;
  • r - 累乘器,初始化为1,用来累计从1到n的整数乘积。
int n,r=1;

3.输入数据

  • 读取一个整数n,表示要计算阶乘的数。
cin>>n;

4.数据计算

  • 开始一个循环,从1遍历到n(包括n)。
  • 在每次循环中,将当前的i与累乘器r相乘,并更新r。
for(int i=1;i<=n;++i){
	r*=i;
}

5.输出

  • 输出累乘的结果,即n的阶乘。
cout<<r;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:一个整数n 
    //未知:编程求 n的阶乘。
    //关系:n 的阶乘定义为从 1 到 n 所有整数的乘积,表示为 n! = 1 * 2 * ... * n。

    //二、数据定义
    int n, r = 1;        // 定义两个整型变量:
                         // n - 存储用户输入的整数;
                         // r - 累乘器,初始化为1,用来累计从1到n的整数乘积。

    //三、数据输入
    cin >> n;            // 从标准输入读取一个整数n,表示要计算阶乘的数。

    //四、数据计算
    for(int i = 1; i <= n; ++i){  // 开始一个循环,从1遍历到n(包括n)。
        r *= i;                   // 在每次循环中,将当前的i与累乘器r相乘,并更新r。
    }

    //五、输出结果
    cout << r;                    // 输出累乘的结果,即n的阶乘。
    
    return 0;                     // 主函数结束,返回0给操作系统,表示程序正常结束。
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1014. 编程求1+1/2+1/3+…+1/n

类型:简单循环


题目描述:

编程求 1+1/2+1/3+⋯+1/n 。

输入:

输入一行,只有一个整数 n(1≤n≤200) 。

输出:

输出只有一行(这意味着末尾有一个回车符号),包括 1 个实数。(保留 3 位小数) 。

样例:

输入:

5

输出:

2.283

1.分析问题

  1. 已知:一个整数n;
  2. 未知:编程求1+1/2+1/3+…+1/n;
  3. 关系:调和级数求和,即求从1到n分之一的所有项之和。

2.定义变量

  • 定义一个整型变量n,用来存储用户输入的上限。
  • 定义一个双精度浮点型变量r,初始化为0,用来累计调和级数的和。
int n;
double r=0;

3.输入数据

  • 读取一个整数n,表示求和的上限。
cin>>n;

4.数据计算

  • 开始一个循环,从1遍历到n(包括n)。
  • 在每次循环中,将当前项1/i累加到r中。
  • 注意使用1.0以确保除法是浮点数除法,而不是整数除法。
for(int i=1;i<=n;++i){
	r+=1.0/i;
}

5.输出

  • 输出累加的结果,设置输出格式为固定小数点形式,并保留三位小数。
cout<<fixed<<setprecision(3)<<r;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:一个整数n;
    //未知:编程求1+1/2+1/3+...+1/n
    //关系:调和级数求和,即求从1到n分之一的所有项之和。

    //二、数据定义
    int n;               // 定义一个整型变量n,用来存储用户输入的上限。
    double r = 0;        // 定义一个双精度浮点型变量r,初始化为0,用来累计调和级数的和。

    //三、数据输入
    cin >> n;            // 从标准输入读取一个整数n,表示求和的上限。

    //四、数据计算
    for(int i = 1; i <= n; ++i){  // 开始一个循环,从1遍历到n(包括n)。
        r += 1.0 / i;             // 在每次循环中,将当前项1/i累加到r中。
                                  // 注意使用1.0以确保除法是浮点数除法,而不是整数除法。
    }

    //五、输出结果
    cout << fixed << setprecision(3) << r;  // 输出累加的结果,设置输出格式为固定小数点形式,并保留三位小数。
    
    return 0;                               // 主函数结束,返回0给操作系统,表示程序正常结束。
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1056. 所有不超过1000的数中含有数字3的自然数

类型:简单循环


题目描述:

编程求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。

输入:

无。

输出:

输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。

样例:

输入:


输出:



1.分析问题

  1. 已知:无输入,直接处理范围内的数。
  2. 未知:求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。
  3. 关系:通过拆分每一位数字来检查是否包含数字3。

2.定义变量

  • 定义一个整型变量c,初始化为0,用来累计包含数字3的数的数量。
int c=0;

3.输入数据

无。

4.数据计算

  • 开始一个循环,从1遍历到999(包括999)。
  • 检查当前数i的每一位是否包含数字3。
  • 如果包含,则将计数器c加1。
for(int i=3;i<1000;++i){
	if(i%10==3||i/10%10==3||i/100==3) ++c;		
}

5.输出

  • 输出包含数字3的数的总数。
cout<<c;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:无输入,直接处理范围内的数。
    //未知:求出所有不超过 1000 的数中,含有数字 3 的自然数,并统计总数。
    //关系:通过拆分每一位数字来检查是否包含数字3。

    //二、数据定义
    int c = 0;           // 定义一个整型变量c,初始化为0,用来累计包含数字3的数的数量。

    //三、数据输入
    // 无需用户输入,直接在代码中处理1到999的所有数。

    //四、数据计算
    for(int i = 1; i < 1000; ++i){  // 开始一个循环,从1遍历到999(包括999)。
        if(i % 10 == 3 || i / 10 % 10 == 3 || i / 100 == 3) {  // 检查当前数i的每一位是否包含数字3。
            ++c;                                               // 如果包含,则将计数器c加1。
        }
    }

    //五、输出结果
    cout << c;                    // 输出包含数字3的数的总数。
    
    return 0;                     // 主函数结束,返回0给操作系统,表示程序正常结束。
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1055. 求满足条件的整数个数

类型:简单循环


题目描述:

在 1∼n 中,找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。

输入:

输入一行,只有一个整数 n(1≤n≤2000) 。

输出:

输出只有一行(这意味着末尾有一个回车符号),包括 1 个整数。

样例:

输入:

100

输出:

1

1.分析问题

  1. 已知:一个整数n;
  2. 未知:找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。
  3. 关系:逻辑运算&&。

2.定义变量

  • 定义两个整型变量:n 和 计数器c。
int n,c=0;

3.输入数据

  • 读取一个整数n,表示范围的上限。
cin>>n;

4.数据计算

  • 开始一个循环,从1遍历到n(包括n)。
  • 检查当前数i是否满足所有条件。
  • 如果满足条件,则将计数器c加1。
for(int i=1;i<=n;++i){
	if(i%3==2&&i%5==3&&i%7==2) ++c;
}

5.输出

  • 输出个数。
cout<<c;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:一个整数n;
    //未知:找出能同时满足用 3 除余 2 ,用 5 除余 3 ,用 7 除余 2 的所有整数的个数,如果没有请输出 0 。
    //关系:逻辑运算符 

    //二、数据定义
    int n, c = 0;        // 定义两个整型变量:
                         // n - 存储用户输入的上限;
                         // c - 计数器,初始化为0,用来累计满足条件的整数数量。

    //三、数据输入
    cin >> n;            // 从标准输入读取一个整数n,表示范围的上限。

    //四、数据计算
    for(int i = 1; i <= n; ++i){  // 开始一个循环,从1遍历到n(包括n)。
        if(i % 3 == 2 && i % 5 == 3 && i % 7 == 2) {  // 检查当前数i是否满足所有条件。
            ++c;                                      // 如果满足条件,则将计数器c加1。
        }
    }

    //五、输出结果
    cout << c;                    // 输出满足条件的整数的数量。
    
    return 0;                     // 主函数结束,返回0给操作系统,表示程序正常结束。
}

欢迎关注本专栏《C++从零基础到信奥赛入门级(CSP-J)》

问题:1393. 与7无关的数?

类型:简单循环


题目描述:

一个整数,如果这个数能够被 7 整除,或者其中有一位是7,我们称为这个数是与 7 有关的数。比如: 14 能被 7 整除,17 有一位为 7 ,这两个数都是与 7有关的数。

请你编程求出 1∼n(n≤999) 中,与 7 无关的数的总和是多少?

比如 1∼10 中与 7 无关的数的和为:1+2+3+4+5+6+8+9+10=48 。

输入:

一个整数 n(n≤999) 。

输出:

1∼n 中与 7 无关的数的总和。

样例:

输入:

10

输出:

48

1.分析问题

  1. 已知:一个整数n;
  2. 未知:1-n中,与 7 无关的数的总和是多少?

2.定义变量

  • n - 存储用户输入的整数;
  • r - 累加器,初始化为0,用来累计满足条件的整数之和。
int n,r=0;

3.输入数据

  • 输入读取一个整数n,表示范围的上限。
cin>>n;

4.数据计算

  • 开始一个循环,从1遍历到n(包括n)。
  • 检查当前数i是否满足以下条件:
    1. 不能被7整除 (i % 7 != 0)
    2. 不包含数字7
  • 如果满足条件,则将当前数i累加到r中。
for(int i=1;i<=n;++i){
		if(!(i%7==0 || i%10==7 || i/10%10==7 || i/100==7)){
			r+=i;
		}
}

5.输出

  • 输出结果r。
cout<<r;

完整代码如下:

#include<bits/stdc++.h>  // 包含了C++标准库中的所有头文件,方便快捷但不推荐用于实际项目中。
using namespace std;     // 使用std命名空间,避免每次使用标准库元素时都得加上std::前缀。

int main(){              // 定义主函数,程序从这里开始执行。
    //一、分析问题
    //已知:一个整数n;
    //未知:与 7 无关的数的总和是多少?
    //关系:不能被7整除且不包含数字7的数。

    //二、数据定义
    int n, r = 0;        // 定义两个整型变量:
                         // n - 存储用户输入的上限;
                         // r - 累加器,初始化为0,用来累计满足条件的整数之和。

    //三、数据输入
    cin >> n;            // 从标准输入读取一个整数n,表示范围的上限。

    //四、数据计算
    for(int i = 1; i <= n; ++i){  // 开始一个循环,从1遍历到n(包括n)。
        // 检查当前数i是否满足以下条件:
        // 1. 不能被7整除 (i % 7 != 0)
        // 2. 不包含数字7 (i % 10 != 7 && i / 10 % 10 != 7 && i / 100 != 7)
        if(!(i % 7 == 0 || i % 10 == 7 || i / 10 % 10 == 7 || i / 100 == 7)) {
            r += i;      // 如果满足条件,则将当前数i累加到r中。
        }
    }

    //五、输出结果
    cout << r;           // 输出满足条件的整数之和。
    
    return 0;            // 主函数结束,返回0给操作系统,表示程序正常结束。
}

三、总结

通过本章节的学习,我们不仅回顾了C++中的循环结构,还学习了如何利用计数器和累加器来进行复杂的数值处理。具体来说,我们了解了:

  • 计数器:用于跟踪满足特定条件的事件发生的次数。它通常从一个初始值开始,在每次满足特定条件时递增或递减。
  • 累加器:用来累积一系列数值的总和。通过在循环体内不断将当前数值添加到累加器中,可以实现对多个数值的求和。

此外,我们通过几个具体的编程问题,如求解调和级数、寻找与7无关的数等,展示了如何将这些概念应用于解决实际问题。

四、感谢

如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。

每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2284295.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新项目上传gitlab

Git global setup git config --global user.name “FUFANGYU” git config --global user.email “fyfucnic.cn” Create a new repository git clone gitgit.dev.arp.cn:casDs/sawrd.git cd sawrd touch README.md git add README.md git commit -m “add README” git push…

【异步编程基础】FutureTask基本原理与异步阻塞问题

文章目录 一、FutureTask 的桥梁作用二、Future 模式与异步回调三、 FutureTask获取异步结果的逻辑1. 获取异步执行结果的步骤2. 举例说明3. FutureTask的异步阻塞问题 Runnable 用于定义无返回值的任务&#xff0c;而 Callable 用于定义有返回值的任务。然而&#xff0c;Calla…

二叉树高频题目——下——不含树型dp

一&#xff0c;普通二叉树上寻找两个节点的最近的公共祖先 1&#xff0c;介绍 LCA&#xff08;Lowest Common Ancestor&#xff0c;最近公共祖先&#xff09;是二叉树中经常讨论的一个问题。给定二叉树中的两个节点&#xff0c;它的LCA是指这两个节点的最低&#xff08;最深&…

vue事件总线(原理、优缺点)

目录 一、原理二、使用方法三、优缺点优点缺点 四、使用注意事项具体代码参考&#xff1a; 一、原理 在Vue中&#xff0c;事件总线&#xff08;Event Bus&#xff09;是一种可实现任意组件间通信的通信方式。 要实现这个功能必须满足两点要求&#xff1a; &#xff08;1&#…

音频入门(一):音频基础知识与分类的基本流程

音频信号和图像信号在做分类时的基本流程类似&#xff0c;区别就在于预处理部分存在不同&#xff1b;本文简单介绍了下音频处理的方法&#xff0c;以及利用深度学习模型分类的基本流程。 目录 一、音频信号简介 1. 什么是音频信号 2. 音频信号长什么样 二、音频的深度学习分…

Redis --- 分布式锁的使用

我们在上篇博客高并发处理 --- 超卖问题一人一单解决方案讲述了两种锁解决业务的使用方法&#xff0c;但是这样不能让锁跨JVM也就是跨进程去使用&#xff0c;只能适用在单体项目中如下图&#xff1a; 为了解决这种场景&#xff0c;我们就需要用一个锁监视器对全部集群进行监视…

使用shell命令安装virtualbox的虚拟机并导出到vagrant的Box

0. 安装virtualbox and vagrant [rootolx79vagrant ~]# cat /etc/resolv.conf #search 114.114.114.114 nameserver 180.76.76.76-- install VirtualBox yum install oraclelinux-developer-release-* wget https://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-g…

2025数学建模美赛|赛题翻译|E题

2025数学建模美赛&#xff0c;E题赛题翻译 更多美赛内容持续更新中...

SpringBoot统一数据返回格式 统一异常处理

统一数据返回格式 & 统一异常处理 1. 统一数据返回格式1.1 快速入门1.2 存在问题1.3 案列代码修改1.4 优点 2. 统一异常处理 1. 统一数据返回格式 强制登录案例中,我们共做了两部分⼯作 通过Session来判断⽤⼾是否登录对后端返回数据进⾏封装,告知前端处理的结果 回顾 后…

C语言学习强化

前言 数据的逻辑结构包括&#xff1a; 常见数据结构&#xff1a; 线性结构&#xff1a;数组、链表、队列、栈 树形结构&#xff1a;树、堆 图形结构&#xff1a;图 一、链表 链表是物理位置不连续&#xff0c;逻辑位置连续 链表的特点&#xff1a; 1.链表没有固定的长度…

反馈驱动、上下文学习、多语言检索增强等 | Big Model Weekly 第55期

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 01 A Bayesian Approach to Harnessing the Power of LLMs in Authorship Attribution 传统方法严重依赖手动特征&#xff0c;无法捕捉长距离相关性&#xff0c;限制了其有效性。最近的研究利用预训练语言模型的…

git reset (取消暂存,保留工作区修改)

出现这种情况的背景&#xff1a;我不小心把node_modules文件添加到暂存区了&#xff0c;由于文件过大&#xff0c;导致不能提交&#xff0c;所以我想恢复之前的状态&#xff0c;但又不想把修改的代码恢复为之前的状态&#xff0c;所以使用这个命令可以只恢复暂存区的状态&#…

Coze插件开发之基于已有服务创建并上架到扣子商店

Coze插件开发之基于已有服务创建并上架到扣子商店 在应用开发中&#xff0c;需要调用各种插件&#xff0c;以快速进行开发。但有时需要调用的插件在扣子商店里没有&#xff0c;那怎么办呢&#xff1f; 今天就来带大家快速基于已有服务创建一个新的插件 简单来讲&#xff0c;就是…

Oracle 创建用户和表空间

Oracle 创建用户和表空间 使用sys 账户登录 建立临时表空间 --建立临时表空间 CREATE TEMPORARY TABLESPACE TEMP_POS --创建名为TEMP_POS的临时表空间 TEMPFILE /oracle/oradata/POS/TEMP_POS.DBF -- 临时文件 SIZE 50M -- 其初始大小为50M AUTOEXTEND ON -- 支持…

企业微信开发009_使用WxJava企业微信开发框架_封装第三方应用企业微信开发002_并且实现多企业授权访问---企业微信开发011

继续接上一节来贴代码: 接下来看 config部分的代码,这部分代码,系统启动的时候,就会执行,从而把配置的一些,配置读取出来,创建,针对每个企业微信的,操作service. 首先看yml配置文件中配置部分: 可以先看一下demo中: 提供了一个配置的示例,当然这个是针对 企业内部自建应用 …

机器学习 - 初学者需要弄懂的一些线性代数的概念

一、单位矩阵 在数学中&#xff0c;单位矩阵是一个方阵&#xff0c;其主对角线上的元素全为1&#xff0c;其余元素全为0。单位矩阵在矩阵乘法中起到类似于数字1在数值乘法中的作用&#xff0c;即任何矩阵与单位矩阵相乘&#xff0c;结果仍为原矩阵本身。 单位矩阵的定义&…

【学术会议-第五届机械设计与仿真国际学术会议(MDS 2025) 】前端开发:技术与艺术的完美融合

重要信息 大会官网&#xff1a;www.icmds.net 大会时间&#xff1a;2025年02月28日-03月02日 大会地点&#xff1a;中国-大连 会议简介 2025年第五届机械设计与仿真国际学术会议&#xff08;MDS 2025) 将于2025年02月28-3月02日在中国大连召开。MDS 2025将围绕“机械设计”…

RabbitMQ 分布式高可用

文章目录 前言一、持久化与内存管理1、持久化机制2、内存控制1、命令行2、配置文件 3、内存换页4、磁盘控制 二、集群1、Erlang的分布式特性2、RabbitMQ的节点类型2.1、磁盘节点 (Disk Node)2.2、内存节点 (RAM Node) 3、构建集群3.1 普通集群3.2 镜像队列3.3、高可用实现方案3…

海康工业相机 SDK对接 Hikvision

有C#基础的&#xff0c;可以参考下&#xff0c;直接上代码 BaseResult 来自于Nuget包&#xff0c;搜Rotion可以搜出来 LS.Standard.Data 海康的接口操作&#xff0c;要先引用相应的dll using MvCamCtrl.NET; using PCZD.Commons.Data.CameraModel; using PCZD.Data; using Sys…

MySQL 二进制安装(正式篇)

Author&#xff1a;Arsen Date&#xff1a;2025/01/24 官方参考文档&#xff1a;点击链接跳转 目录 规划下载安装管理FAQ 规划 OSMySQL Server Version备注CentOS 7.9 or Linux - Generic8.0.33(GNU libc) 2.17 下载 二进制包下载地址&#xff1a;https://downloads.mysql.…