GESP三级C++考试语法知识(二、进制转换)课后训练

GESP三级C++考试语法知识(二、进制转换)课后训练

🎯《进制转换 18 道经典算法题(竞赛基础)》


第一关:十进制 ↔ 二进制(基础)


🧩 题1 数字翻译机

1、📖 故事

计算机王国有一台机器,它只会说 二进制语言

输入一个十进制数字,让机器翻译成二进制。

2、输入

13 

3、输出

1101 

4、🧠 思考

(1)使用:

除2取余法 

(2)步骤

13 ÷2 =6 余1 6 ÷2 =3 余0 3 ÷2 =1 余1 1 ÷2 =0 余1 

(3)倒序

1101 

5、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; int a[100],k=0; while(n>0) { a[k++]=n%2; n/=2; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🧩 题2 机器人读数字

1、📖 故事

机器人只认识 二进制

但你给了它一个二进制数字,让它算出十进制是多少。

2、输入

10101 

3、输出

21 

4、🧠 思考

(1)权值展开:

1×2⁴ 0×2³ 1×2² 0×2¹ 1×2⁰ 

(2)计算

16+4+1=21 

5、💻 C++代码

#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++) { ans=ans*2+(s[i]-'0'); } cout<<ans; } 

第二关:二进制 ↔ 八进制


🧩 题3 二进制压缩机

1、📖 故事

计算机觉得二进制太长了,于是发明了一种压缩方法:

3个二进制 = 1个八进制 

备注:本题中只考虑正数,不考虑负数。


2、输入

101110 

3、输出

56 

4、🧠 思考

(1)分组

101 110 

(2)转换

101 =5 110 =6 

5、💻 C++代码

方法1:

#include<iostream> #include<string> using namespace std; int main() { string s; cin >> s; // 补0到3的倍数 while(s.size() % 3 != 0) s = "0" + s; for(int i = 0; i < s.size(); i += 3) { string t = s.substr(i,3); if(t == "000") cout << 0; if(t == "001") cout << 1; if(t == "010") cout << 2; if(t == "011") cout << 3; if(t == "100") cout << 4; if(t == "101") cout << 5; if(t == "110") cout << 6; if(t == "111") cout << 7; } }

方法2:

#include<iostream> #include<string> using namespace std; int main() { string s; cin >> s; while(s.size() % 3 != 0) s = "0" + s; for(int i = 0; i < s.size(); i += 3) { int x = 0; x = (s[i]-'0')*4 + (s[i+1]-'0')*2 + (s[i+2]-'0'); cout << x; } }


🧩 题4 八进制翻译官

1、📖 故事

输入一个八进制数字,翻译成十进制。


2、输入

157 

3、输出

111 

4、🧠 思考

(1)权值展开

1×8² 5×8¹ 7×8⁰ 

  (2) 计算

64+40+7=111 

5、💻 C++代码

#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++) ans=ans*8+(s[i]-'0'); cout<<ans; } 

第三关:二进制 ↔ 十六进制


🧩 题5 十六进制魔法石

1、📖 故事

魔法师使用 十六进制符号

A=10 B=11 C=12 D=13 E=14 F=15 

2、输入

FF 

3、输出

255 

4、🧠 思考

F=15 

(1)权值展开

15×16¹ + 15×16⁰ 

(2)计算

240+15=255 

5、💻 C++代码

#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++) { int x; if(s[i]>='0'&&s[i]<='9') x=s[i]-'0'; else x=s[i]-'A'+10; ans=ans*16+x; } cout<<ans; } 

🧩 题6 二进制变十六进制

1、输入

11010110 

2、输出

D6 

3、🧠 思考

4位一组 
1101 0110 
D6 

4、💻 C++代码

#include<iostream> #include<string> using namespace std; int main() { string s; cin >> s; while(s.size() % 4 != 0) s = "0" + s; for(int i = 0; i < s.size(); i += 4) { int x = 0; x = (s[i]-'0')*8 + (s[i+1]-'0')*4 + (s[i+2]-'0')*2 + (s[i+3]-'0') ; if(x>=0 && x<10) cout <<char('0'+x); else cout<<(char)('A'+x-10); } }

第四关:任意进制转换


🧩 题7 十进制 → 八进制

1、输入

100 

2、输出

144 

3、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; int a[100],k=0; while(n>0) { a[k++]=n%8; n/=8; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🧩 题8 十进制 → 十六进制

1、输入

255 

2、输出

FF 

3、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; char a[100]; int k=0; while(n>0) { int r=n%16; if(r<10) a[k++]=r+'0'; else a[k++]=r-10+'A'; n/=16; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

第五关:综合题


🧩 题9 任意进制 → 十进制

1、输入

base = 7 number = 123 

2、输出

66 

3、权值展开

1×7² 2×7¹ 3×7⁰ 

4、💻 C++代码

#include<iostream> #include<string> using namespace std; int main() { int base; cin >> base; string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++) { int x; if(s[i]>='0'&&s[i]<='9') x=s[i]-'0'; else x=s[i]-'A'+10; ans = ans * base + x; } cout<<ans; } 

🧩 题10 十进制 → 任意进制

1、输入

n=100 base=3 

2、输出

10201 

3、万能模板

#include<iostream> using namespace std; int main() { int n,base; cin>>n>>base; int a[100],k=0; while(n>0) { a[k++]=n%base; n/=base; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

故事题目:加强训练


🎯 第11题 二进制压缩成八进制

1、📖 故事

计算机王国里,士兵们每天发送大量 二进制情报

101011 

国王觉得太长了,于是发明了一种 压缩魔法

3个二进制数字 可以变成 1个八进制数字

现在请你帮国王把情报压缩。


2、💻 C++代码

通过十进制转换:

1️⃣ 二进制 → 十进制
2️⃣ 十进制 → 八进制
#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int n=0; for(int i=0;i<s.size();i++) n=n*2+(s[i]-'0'); int a[100],k=0; while(n>0) { a[k++]=n%8; n/=8; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🎯 第12题 八进制变成二进制

1、📖 故事

程序员魔法师喜欢用八进制写数字:

37 

但是计算机只能看懂 二进制

于是你要当 翻译官


2、💻 C++代码

通过十进制转换:

八进制 → 十进制 → 二进制 
#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int n=0; for(int i=0;i<s.size();i++) n=n*8+(s[i]-'0'); int a[100],k=0; while(n>0) { a[k++]=n%2; n/=2; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🎯 第13题 十六进制变二进制

1、📖 故事

黑客学校,学生们用一种神秘语言:

A5 

老师说:

每一位十六进制都能变成 4位二进制

2、💻 C++代码

通过十进制转换:

十六进制 → 十进制 → 二进制 
#include<iostream> #include<string> using namespace std; int main() { string s; cin>>s; int n=0; for(int i=0;i<s.size();i++) { int x; if(s[i]>='0'&&s[i]<='9') x=s[i]-'0'; else x=s[i]-'A'+10; n=n*16+x; } int a[100],k=0; while(n>0) { a[k++]=n%2; n/=2; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🎯 第14题 二进制变十六进制

1、📖 故事

计算机给你一个 超长二进制密码

11110000 

国王要求把它翻译成 十六进制密钥


2、💻 C++代码

#include<iostream> using namespace std; int main() { string s; cin>>s; int n=0; for(int i=0;i<s.size();i++) n=n*2+(s[i]-'0'); char a[100]; int k=0; while(n>0) { int r=n%16; if(r<10) a[k++]=r+'0'; else a[k++]=r-10+'A'; n/=16; } for(int i=k-1;i>=0;i--) cout<<a[i]; } 

🎯 第15题 统计二进制中1的数量

1、📖 故事

机器人军队里:

1 = 士兵 0 = 空地 

现在输入n,转换成二进制是

1011011 

请问有多少士兵?


2、📊 图解

1 0 1 1 0 1 1 ↑ ↑ ↑ ↑ ↑ 

一共

5个 

3、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; int cnt=0; while(n>0) { if(n%2==1) cnt++; n/=2; } cout<<cnt; } 

🎯 第16题 求二进制长度

1、📖 故事

计算机想知道:

一个数字需要多少 二进制位 才能表示?

例如

13 

2、📊 图解

13 = 1101 

长度:

4 

3、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; int len=0; while(n>0) { n/=2; len++; } cout<<len; } 

🎯 第17题 输出8位二进制

1、📖 故事

计算机存储数字时,常用 8位二进制

例如:

5 

必须写成

00000101 

2、📊 图解

5 → 101 补0 → 00000101 

3、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; int a[8]={0}; for(int i=7;i>=0;i--) { a[i]=n%2; n/=2; } for(int i=0;i<8;i++) cout<<a[i]; } 

🎯 第18题 找最低位的1

1、📖 故事

数字有一个 隐藏的最右边的1

(1)例如:

12 

(2)二进制:

1100 

(3)最低位1是

0100 

2、💻 C++代码

#include<iostream> using namespace std; int main() { int n; cin>>n; cout<<(n & -n); } 

  需要后面课程,掌握按位操作符。

(这是竞赛经典技巧)


🎓 做完18题学生掌握

核心技能:

✅ 二进制
✅ 八进制
✅ 十六进制
✅ 任意进制转换
✅ C++多种实现方式

这正是  初学阶段很重要的知识点


Read more

6.llamafactory项目介绍与安装部署

6.llamafactory项目介绍与安装部署

一、学术资源加速 * 服务说明:AutoDL提供学术资源加速服务,主要解决GitHub和HuggingFace访问速度慢的问题,但仅限学术用途且不承诺稳定性 * 加速地址:包含github.com、githubusercontent.com、githubassets.com、huggingface.co等域名 * 终端配置: * 注意事项: * 建议不需要时关闭加速,可能影响正常网络 * 关闭命令: 二、主流微调框架介绍 1. Transformer * 生态地位:Hugging Face核心库,NLP领域最广泛使用的基础框架 * 技术特点: * 支持全参数微调 * 兼容PEFT库扩展 * 优势: * 生态系统最完善,社区活跃 * 与PyTorch/TensorFlow无缝集成 * 模型和教程资源丰富 * 适用场景:中小规模模型实验、研究和开发,微调入门首选 2. PEFT * 技术定位:参数高效微调标准库 * 核心方法: * LoRA * Prefix-tuning * AdaLoRA

By Ne0inhk
【Linux系统编程】(四十二)吃透线程互斥!从原理到实战,手把手教你玩转 Linux 下的互斥锁

【Linux系统编程】(四十二)吃透线程互斥!从原理到实战,手把手教你玩转 Linux 下的互斥锁

目录 前言 一、线程互斥的核心概念:搞懂这些,才算入门 1.1 共享资源与临界资源 1.2 临界区 1.3 互斥的定义 1.4 原子性:互斥的底层要求 二、多线程共享资源的坑:亲眼看看问题出在哪 2.1 问题代码:未加互斥的售票系统 2.2 编译运行与异常结果 2.3 问题根源:三步分析 (1)线程调度的随机性 (2)耗时操作放大了竞争问题 (3)ticket--本身不是原子操作 2.4 解决问题的核心要求 三、Linux 下的互斥量:mutex 的使用全解析 3.1 互斥量的类型与核心接口

By Ne0inhk

Stable Diffusion 4.9全面升级:2024年AI绘画工具的效率革命与商业落地

导语 【免费下载链接】stable-diffusion-v1-5 项目地址: https://ai.gitcode.com/hf_mirrors/bdsqlsz/stable-diffusion-v1-5 Stable Diffusion 4.9版本于2024年正式发布,通过"解压即用"的便捷部署、多模态生成能力提升及性能优化,重新定义了开源AI绘画工具的实用性标准,推动创意产业向更高效、更低门槛的方向发展。 行业现状:AI图像生成的效率竞赛 2024年,AI图像生成市场呈现爆发式增长,根据市场研究数据,全球AI图像生成器市场规模已达33.6亿美元,其中企业级应用占比首次超过消费者市场,达到58%。在这一背景下,"生成速度"和"部署门槛"成为企业选择AI创作工具的核心考量因素。传统图像生成模型往往需要复杂的环境配置和较长的生成时间,而Stable Diffusion作为开源生态的代表,正通过持续迭代打破这一局面。 如上图所示,这组由9张不同风格女性AI生成图像组成的拼贴,直观展示了Stable

By Ne0inhk

为什么 VsCode 远程 Copilot 用不了 Claude Agent?系统权限不足的解决策略

VsCode 远程 Copilot 无法调用 Claude Agent 的原因 Claude Agent 在 VsCode 远程环境下失效通常与权限配置或环境隔离有关。常见触发因素包括网络策略限制、扩展依赖缺失、身份验证令牌失效或 VsCode 容器/SSH 配置未正确同步本地凭据。部分案例中,安全软件会拦截跨进程通信,导致 Agent 无法响应。 系统权限不足的核心排查点 检查 VsCode 远程会话是否具备读写 ~/.config 和 /usr/local/lib 的权限,这两处常存放 Copilot 的运行时缓存。通过终端执行 ls -la /usr/local/lib | grep copilot 确认文件归属。若输出显示为 root 所有,需用

By Ne0inhk