核心内容摘要
告别限制,解锁无限:Twitter蓝鸟1.3.5破解版,你的专属社交升级指南!
算法学习日记 | 今天我用「进制转换」解了三道题原来数学也能写成代码大家好我是你们的算法学习搭子 今天继续我的算法入门之旅重点练习了进制转换这一基础但极其重要的数学与编程结合点。
很多人觉得“进制转换”只是小学数学知识但其实在编程中它是一个典型的“模拟数学过程”的例子。
我们不仅要会算还要能写出通用的程序来处理任意进制之间的转换。
今天我完整做了三道题每一道都坚持用最朴素的逻辑实现。
下面我把题目原文和我的原始代码原封不动贴出来不做任何删减或美化只为真实记录学习过程。
题目一十六进制转十进制问题描述请问十六进制数2021ABCD对应的十进制是多少答案提交这是一道结果填空的题你只需要算出结果后提交即可。
本题的结果为一个整数在提交答案时只填写这个整数填写多余的内容将无法得分。
运行限制最大运行时间1s最大运行内存256M难度易 LV.2标签2022, 省模拟赛, 代码填空✅ 我的代码完全保留原始写法#includeiostream#includestringusingnamespacestd;intcal(charx){if(xA){returnx10-A;}returnx-0;}intchange(intk,string s){intans0;for(inti0;is.size();i){ansans*kcal(s[i]);}returnans;}intmain(){coutchange(16,2021ABCD);return0;} 题目二九进制转十进制问题描述本题为填空题只需要算出结果后在代码中使用输出语句将所填结果输出即可。
九进制正整数(
9(
_9(
9转换成十进制等于多少运行限制最大运行时间1s最大运行内存512M难度易 LV.1标签2022, 省赛, 进制转换✅ 我的代码完全保留原始写法#includeiostream#includestring#includealgorithmusingnamespacestd;intcal(chars){if(sA){returns-A10;}returns-0;}intchange(intk,string s){intans0;for(inti0;is.size();i){ansans*kcal(s[i]);}returnans;}intmain(){coutchange(9,
;return0;} 题目三任意进制转换题目描述给定一个 $ N $ 进制数 $ S $请你将它转换为 $ M $ 进制。
输入描述第一行为一个整数 $ T表示测试数据数量。
表示测试数据数量。
表示测试数据数量。
1 \leq T \leq 10^5 $每个测试用例包含两行第一行包含两个整数 $ N, M $。
第二行输入一个字符串 $ S $表示 $ N $ 进制数。
数据范围保证$ 2 \leq N, M \leq 16 $若 $ N \geq 10 $则用 $ A \sim F $ 表示数码 $ 10 \sim 15 $。
保证 $ S $ 对应的十进制数的位数不超过 10。
输出描述输出共 $ T $ 行每行表示一组数据的答案。
输入样例2 2 10 10101 11 2 1793A5068输出样例21 101011110010101001110101010111运行限制最大运行时间1s最大运行内存128M✅ 我的代码完全保留原始写法#includeiostream#includestring#includealgorithmusingnamespacestd;intcal(chars){if(sA){returns-A10;}elsereturns-0;}intchange_to_10(intk,string s){intans0;for(inti0;is.size();i){ansans*kcal(s[i]);}returnans;}stringchange(intk,intx){string ans;while(x!
{inttx%k;if(t
{ansans(char)(t
;}else{ansans(char)(t-10A);}x/k;}reverse(ans.begin(),ans.end());returnans;}intmain(){intn;cinn;inta,b;string s;for(inti0;in;i){cinab;cins;coutchange(b,change_to_10(a,s))endl;}return0;} 我的思考这三道题虽然形式不同但核心思想一致进制转换 模拟数学运算过程我们可以把整个过程拆解为两步N 进制 → 十进制从高位到低位每一位乘以 $ N^{\text{位数}} $ 累加。
十进制 → M 进制不断除以 M取余数倒序排列。
而代码中的cal()函数就是用来处理字符A~F到数字 10~15 的映射这是进制转换中必不可少的一环。
你会发现第一题和第二题是特例直接调用change()函数即可第三题是通用版本先转十进制再转目标进制所有代码都基于同一个逻辑框架只是输入参数不同。
这说明编程的本质是将通用规律封装成函数再复用解决具体问题。
✅