蓝桥杯第2095题 九进制转十进制 简单 C++ 进制模板 附Java代码
题目
问题描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
九进制正整数 (2022)9(2022)9 转换成十进制等于多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 512M
思路和解题方法
- convert2ten 函数用于将一个 a 进制的数转换为十进制。它通过迭代取得输入数字 num 的各个位上的数字,并根据其权重相加以得到十进制表示。具体步骤是:取出 num 的最后一位(即当前位上的数字),乘以权重(a 的当前位数次幂),然后累加起来,最终得到十进制表示的结果。
- convert2other 函数用于将十进制数转换为 a 进制。它通过反复取余数和整除的操作,将十进制数转换为 a 进制表示。具体步骤是:反复地取十进制数除以 a 的余数,并将余数按顺序排列起来,直至十进制数变为 0,得到的余数序列就是 a 进制表示的结果。
- main 函数中调用了 convert2ten 函数,并将结果输出到控制台。
复杂度
时间复杂度:
O(log(num))
时间复杂度分析:
convert2ten
函数中的 while 循环需要对输入数字进行迭代,因此其时间复杂度为 O(log(num)),其中 num 是输入数字。convert2other
函数中的 while 循环同样需要对输入数字进行迭代,因此其时间复杂度也为 O(log(num))。
空间复杂度
O(log(num))
空间复杂度分析:
convert2ten
函数中只使用了少量整型变量和一个临时变量,因此其空间复杂度为 O(1)。convert2other
函数中使用了一个队列来存储余数,队列的大小取决于输入数字的大小,因此其空间复杂度为 O(log(num))。
c++ 代码
#include <bits/stdc++.h> // 导入标准头文件
using namespace std; // 使用标准命名空间
int convert2ten(int a, int num) // 将a进制转换为十进制的函数
{
int b = 0; // 十进制结果
int t; // 临时变量
int i = 0; // 权重指数
while (num != 0) // 当输入数字不为0时
{
t = num % 10; // 取出最后一位数字
num = num / 10; // 去掉最后一位数字
b += t * pow(a, i); // 根据权重相加
i++; // 权重指数自增
}
return b; // 返回十进制结果
}
int convert2other(int a, int num) // 将十进制转换为a进制的函数
{
queue<int> mod; // 用于存储余数的队列
int t; // 临时变量
while (num != 0) // 当输入数字不为0时
{
t = num % a; // 求余数
num = num / a; // 整除
mod.push(t); // 将余数加入队列
}
int b = 0; // 结果
int i = 0; // 权重指数
while (!mod.empty()) // 当队列非空时
{
t = mod.front(); // 取出队首元素
mod.pop(); // 弹出队首元素
b += t * pow(10, i); // 根据权重相加
i++; // 权重指数自增
}
return b; // 返回a进制结果
}
int main()
{
cout << convert2ten(9, 2022); // 输出将9进制数2022转换为十进制的结果
return 0; // 返回执行成功
}
蓝桥杯官方题解
#include <iostream>
using namespace std;
int main()
{
string s = "2022"; // 定义字符串s并初始化为"2022"
int ans = 0; // 初始化结果为0
for (int i = 0; i < s.size(); i++) // 遍历字符串s的每个字符
{
ans = ans * 9 + s[i] - '0'; // 将字符转换为数字并乘以9,然后加到结果上
}
cout << ans << endl; // 输出结果
return 0;
}
秒杀代码
#include <iostream>
int main(){std::cout<<1478;return 0;}
Java代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String rs="2022";
System.out.println(Integer.parseInt(rs,9));
scan.close();
}
}
觉得有用的话可以点点赞,支持一下。
如果愿意的话关注一下。会对你有更多的帮助。
每天都会不定时更新哦 >人< 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人