蓝桥杯python基础算法(2-2)——基础算法(D)——进制转换*

目录

五、进制转换

十进制转任意进制,任意进制转十进制

[例题 P1230 进制转换](#例题 P1230 进制转换)

[作业 P2095 进制转化](#作业 P2095 进制转化)

[作业 P2489 进制](#作业 P2489 进制)


五、进制转换

十进制转任意进制,任意进制转十进制


python 复制代码
int_to_char = "0123456789ABCDEF"
def Ten_to_K(k, x):
    answer = ""
    while x != 0:
        # int_to_char[x % k] 用于获取余数对应的字符
        answer += int_to_char[x % k]
        # 将 x 整除 k,更新 x 的值
        x //= k
    # 由于是从低位到高位构建 answer,所以需要将其反转后返回
    return answer[::-1]



char_to_int = {}
# 使用 enumerate 遍历 int_to_char 字符串
# idx 是字符的索引,chr 是字符串中的每个字符
for idx, chr in enumerate(int_to_char):
    # 将每个字符作为键,其索引作为值,添加到 char_to_int 字典中
    char_to_int[chr] = idx
def K_to_Ten(k, x):
    answer = 0
    # 将输入的数字符串 x 反转,以便从低位到高位处理
    x = x[::-1]
    for i in range(len(x)):
        # 将每一位字符对应的数值乘以 k 的 i 次幂,并累加到 answer 中
        # char_to_int[x[i]] 获取字符对应的数值
        answer = answer + char_to_int[x[i]] * k ** i
    return answer

例题 P1230 进制转换


给定一个 N 进制数 S,请你将它转换为 M 进制。

输入描述

第一行为一个整数 T,表示测试数据数量。 (1≤T≤10^5)

每个测试用例包含两行,第一行包含两个整数 N,M。

第二行输入一个字符串 S,表示 N 进制数。

数据范围保证:2≤N,M≤16,若 N≥10,则用 A∼F 表示字码 10∼15。保证 S 对应的十进制数的位数不超过 10。

输出描述

输出共 T,每行表示一组数据的答案。


python 复制代码
int_to_char="0123456789ABCDEF"
def Ten_to_K(k,x):
    answer=""
    while x !=0:
        answer+=int_to_char[x%k]
        x//=k
    return answer[::-1]

char_to_int={}
for idx,chr in enumerate(int_to_char):
    char_to_int[chr]=idx
def K_to_Ten(k,x):
    answer=0
    x=x[::-1]
    for i in range(len(x)):
        answer=answer+char_to_int[x[i]]*k**i
    return answer

T=int(input())
for _ in range(T):
    N,M=map(int,input().strip().split())
    S=input().strip()

    # N转换为10进制,10进制转化为M进制
    y=K_to_Ten(N,S)
    z=Ten_to_K(M,y)
    print(z)

作业 P2095 进制转化


本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

九进制正整数 (2022)9​ 转换成十进制等于多少?


python 复制代码
print(1478)
python 复制代码
int_to_char="0123456789ABCDEF"
char_to_int={}
for idx,chr in enumerate(int_to_char):
  char_to_int[chr]=idx

# 请在此输入您的代码
def K_to_Ten(k,x):
  answer=0
  x=x[::-1]
  for i in range(len(x)):
    answer=answer+char_to_int[x[i]]*k**i
  return answer

print(K_to_Ten(9,"2022"))

作业 P2489 进制


请问十六进制数 2021ABCD 对应的十进制是多少?

答案提交

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。


python 复制代码
print(539077581)
python 复制代码
int_to_char="0123456789ABCDEF"
char_to_int={}
for idn,chr in enumerate(int_to_char):
    char_to_int[chr]=idn
def K_to_Ten(k,x):
    answer=0
    x=x[::-1]
    for i in range(len(x)):
        answer=answer+char_to_int[x[i]]*k**i
    return answer
print(K_to_Ten(16,"2021ABCD"))
相关推荐
ZhengEnCi3 小时前
Agent 架构怎么选:从单 Agent 到多 Agent 编排的选型决策指南
算法·架构
秋天的怀念_David4 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Pniubi4 小时前
力扣283移动零(双指针法)
算法·leetcode·职场和发展
hhb_6184 小时前
大模型落地三重优化实战
人工智能·算法·机器学习
云和数据.ChenGuang4 小时前
光哥说Python RAG 系统需要哪些评估指标:从检索到生成的全链路评测指南
网络·人工智能·python·算法·langchain
2601_970703836 小时前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法
心中有你02146 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
ZhengEnCi7 小时前
同样的模型,为什么本地和云 API 差别那么大:量化精度、聊天模板与采样参数的三大元凶
人工智能·算法·llm
Flynn Liang7 小时前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
liminla!7 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法