记《蓝桥杯202403 STEMA考试 C++ 》之第一题:考拉兹猜想

考拉兹猜想

也称为3n+1猜想或冰雹猜想。是指对于任意正整数N,若N为偶数,则将N除以2;若N为奇数,则将N乘以3再加1。如此循环,最终都能够得到1。
现给定一个正整数N,按照上述步骤,请计算出N要经过多少步才能变成1。例如:N=5, 变成1的步骤如下:1. 5×3 + 1 = 162. 16÷2 = 83. 8÷2 = 44. 4÷2 = 25. 2÷2 = 1共经过5步就得到1,故输出5。输入输入一个正整数N(0<N<1000000)。

输出

输出一个整数,表示N要经过多少步才能变成1

输入样例

5

输出样例

5

C++实现

#include<bits/stdc++.h>
using namespace std;

int n;

int main()
{
cin>>n;
int ans =0;
while(n!=1){
if(n%2==0){
n=n/2;
}else{
n=3*n+1;
}
ans++;
}
cout<<ans;
return 0;
}
.
在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

### 蓝桥杯 202501 STEMA C++ 选择解析 关于蓝桥杯 202501 STEMAC++ 部分选择,以下是对其可能涉及的知识点以及常见目类型的分析和解答方法。 #### 基础语法与数据类型 C++ 中的基础语法和数据类型是考试中的重点之一。例如,在判断变量范围或者运算符优先级时,生需熟悉整型、浮点型以及其他基本数据类型的特性及其存储方式[^1]。 ```cpp int a = 2147483647; // int 类型的最大值 a += 1; // 此处会发生溢出,结果变为负数 ``` #### 函数调用与参数传递 函数的定义与调用也是常知识点。需要注意的是传值调用 (pass by value) 和传址调用 (pass by reference) 的区别。如果目中涉及到指针或引用,则更应仔细区分两者的实际效果[^2]。 ```cpp void modifyValue(int &x, int y){ x *= 2; y /= 2; } int main(){ int num1=5,num2=10; modifyValue(num1, num2); // 修改后的num1为10,而num2仍保持原值不变 } ``` #### STL容器的应用 标准模板库(STL) 是现代C++编程的重要组成部分,其中vector、map等容器类经常出现在试当中。了解这些容器的操作接口及时间复杂度对于快速解至关重要[^3]。 ```cpp #include <vector> std::vector<int> vec{1,2,3}; vec.push_back(4); // 向向量末尾添加元素 if(!vec.empty()) { std::cout << "First element:" << vec.front() << "\n"; } ``` #### 动态内存管理 动态分配内存的概念通过new/delete操作符实现,错误处理不当容易引发程序崩溃等问。因此掌握如何安全有效地释放不再使用的资源显得尤为重要[^4]。 ```cpp class MyClass{ public: ~MyClass(){ /*析构函数*/ } }; MyClass* objPtr=new MyClass(); delete objPtr;//得销毁对象以防止泄露 objPtr=nullptr; ``` #### 多线程基础概念 随着并发计算变得越来越普遍,部分高级别的竞赛也可能察到有关多线程方面的基础知识,比如互斥锁(mutex),条件变量(condition variable)等内容[^5]。 ```cpp #include<thread> #include<mutex> std::mutex mtx; void print_block(int n,std::string msg){ std::lock_guard<std::mutex> lock(mtx); for(int i=0;i<n;++i){std::cout<<msg;} } int main(){ std::thread t1(print_block,5,"Thread1 "); std::thread t2(print_block,5,"Thread2 "); t1.join();t2.join(); return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值