練9:進制轉換

歡迎大家訂閱【藍橋杯Python每日一練】 專欄,開啟你的 Python數據結構與算法 學習之旅!

文章目錄

  • 1 進制轉換
  • 2 例題分析


1 進制轉換

①任意制轉為十進制
在這里插入圖片描述
在這里插入圖片描述
【示例】
在這里插入圖片描述

在這里插入圖片描述
②十進制轉為任意制
【法一】
在這里插入圖片描述
在這里插入圖片描述
【法二】
在這里插入圖片描述

2 例題分析

在這里插入圖片描述

題目地址:https://www.lanqiao.cn/problems/1230/learning/

樣例輸入

2
2 10 
10101 
11 2
1793A5068

樣例輸出

21
10101111001010100111010101011

【示例代碼】

# 定義字符集并構建字符到整數的映射
int_to_char = "0123456789ABCDEF"
char_to_int = {chr: idx for idx, chr in enumerate(int_to_char)}# k進制字符串轉換為十進制整數
# 輸入:k(源進制),x(字符串)
def K_To_Ten(k, x):ans = 0x = x[::-1]  # 反轉字符串,以便從最低位開始計算for i in range(len(x)):ans += char_to_int[x[i]] * k**i  # 每位轉換為十進制return ans# 十進制轉換為任意 k 進制
# 輸入:k(目標進制),x(十進制整數)
def Ten_To_K(k, x):if x == 0:  # 處理特殊情況,如果十進制數為0return "0"ans = ""while x != 0:ans += int_to_char[x % k]  # 取余并轉換為目標進制字符x //= k  # 向下取整除以移除當前最低位return ans[::-1]  # 反轉結果字符串以正確排列位序# 實現進制轉換邏輯
T = int(input())  # 讀取測試用例數量
for _ in range(T):N, M = map(int, input().split())  # 讀取源進制和目標進制x = input().strip()  # 讀取源進制數字串# 先將源進制數字串轉換為十進制整數y = K_To_Ten(N, x)# 將十進制整數轉換為目標進制數字串z = Ten_To_K(M, y)# 輸出結果print(z)

【代碼分析】

①字符集定義和映射

int_to_char = "0123456789ABCDEF"
char_to_int = {chr: idx for idx, chr in enumerate(int_to_char)}
  • int_to_char: 包括所有可能出現在任意進制表示中的字符集合,支持 0 到 15 進制數字。

    • 例如:0, 1, 2, 3, ... 9, A, B, C, D, E, F
  • char_to_int: 字符到整數的映射字典。

    • '0' 映射為 0
    • '1' 映射為 1
    • 'A' 映射為 10
    • 'B' 映射為 11
    • 依此類推…
  • 實現原理:用 enumerate 生成索引與字符的映射。
    for idx, chr in enumerate(int_to_char): char_to_int[chr] = idx這一步操作將 char_to_int 構建為如下形式:

{'0': 0, '1': 1, '2': 2, '3': 3,'4': 4, ...'A': 10,'B': 11,...'F': 15
}

該字典用于轉換任意進制字符和整數之間的相互轉換。

②從任意源進制字符串轉換為十進制
定義 K_To_Ten 函數

def K_To_Ten(k, x):ans = 0x = x[::-1]  # 反轉字符串,以便從最低位開始計算for i in range(len(x)):ans += char_to_int[x[i]] * k**i  # 每位轉換為十進制return ans

a. 參數

  • k: 源進制,例如二進制為 ( k = 2 )。
  • x: 輸入字符串,例如二進制字符串 "10101"

b. 流程解析

  • 反轉字符串
    • 在進制轉換中,從右往左處理數字更簡單。
    • x[::-1] 實現字符串反轉。
  • 逐位轉換
    • 每位通過索引獲取其整數值,并計算其在十進制的值。
    • 公式:char_to_int[x[i]] * k**i
      • char_to_int[x[i]] 獲取當前字符對應的整數值。
      • k**i 表示當前位在十進制數中的權重。
  • 返回結果ans 包括轉換后的十進制結果。

③從十進制轉換為任意目標進制字符串
定義 Ten_To_K 函數

def Ten_To_K(k, x):if x == 0:  # 處理特殊情況,如果十進制數為0return "0"ans = ""while x != 0:ans += int_to_char[x % k]  # 取余并轉換為目標進制字符x //= k  # 向下取整除以移除當前最低位return ans[::-1]  # 反轉結果字符串以正確排列位序

a. 參數

  • k: 目標進制,例如十進制轉換為二進制時 ( k = 2 )。
  • x: 十進制整數。

b. 流程解析

  • 特殊情況處理:如果十進制輸入為 0,直接返回 "0"
  • 轉換邏輯
    • 每次通過 x % k 取當前位的余數。
    • 通過 x //= k 逐步去除當前最低位。
    • 每位轉換后用 int_to_char 轉換為目標字符。
  • 反轉結果字符串:因為轉換從最低位開始,需要將結果字符串反轉。

④主邏輯

T = int(input())  # 讀取測試用例數量
for _ in range(T):N, M = map(int, input().split())  # 讀取源進制和目標進制x = input().strip()  # 讀取源進制數字串y = K_To_Ten(N, x)  # 轉換為十進制整數z = Ten_To_K(M, y)  # 轉換為目標進制數字串print(z)
  1. 首先讀取測試用例的數量 T
  2. 對每個測試用例:
    • 讀取源進制 N 和目標進制 M
    • 讀取源進制數字字符串 x
  3. 調用函數依次轉換:
    • K_To_Ten(N, x) 將源進制轉換成十進制整數。
    • Ten_To_K(M, y) 將十進制轉換為目標進制字符串。
  4. 輸出轉換結果。

【運行結果】
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62622.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62622.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62622.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C語言:指針詳解續

一、字符指針變量 我們知道有種指針類型為字符指針(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其實它還有一種使用方式。 #include <stdio.h> int main() {char* pstr "hello…

HarmonyOS-高級(一)

文章目錄 一次開發、多端部署自由流轉 &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;HarmonyOS專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2024年12月09日12點19分 一次開發、多端部署 布局能力 自適應布局 拉伸能力均分能力占比能力縮放…

[DEBUG] pytorch 加速安裝兼容cuda12.6版本(Torch CUDA is not available )

如何使用鏡像源快速安裝兼容 CUDA 12.6 的 PyTorch 在使用 PyTorch 時&#xff0c;有時會遇到 CUDA 版本不兼容的問題。對于 CUDA 12.6&#xff0c;PyTorch 目前尚未直接支持&#xff0c;但可以通過安裝 cu118 版本來兼容。由于 PyTorch 官網下載速度較慢&#xff0c;我們可以…

云計算IaaS-PaaS-SaaS三種服務模式轉至元數據結尾

在當今數字化時代&#xff0c;云計算已經成為推動企業創新與發展的核心力量。而云計算的模型主要有三種&#xff1a;IAAS、PAAS 和 SAAS&#xff0c;它們各自在云計算的龐大體系中扮演著獨特且關鍵的角色&#xff0c;恰似一座大廈的不同樓層&#xff0c;共同構建起強大而靈活的…

【Excel學習記錄】02-單元格格式設置

1.單元格格式工具美化表格 單元格格式位置 選中單元格&#xff0c;右鍵→設置單元格格式 合并居中 跨越合并 字體類型、大小、顏色、填充底紋、邊框 斜線 軟回車&#xff1a;alt enter 格式刷 2.單元格數字格式 格式不影響數值&#xff0c;只是展示形式 日期本質也是數…

【嵌入式系統】第4章 嵌入式最小系統,供電電路,時鐘電路,復位電路,程序下載電路

關注作者了解更多 我的其他CSDN專欄 過程控制系統 工程測試技術 虛擬儀器技術 可編程控制器 工業現場總線 數字圖像處理 智能控制 傳感器技術 嵌入式系統 復變函數與積分變換 單片機原理 線性代數 大學物理 熱工與工程流體力學 數字信號處理 光電融合集成電路…

期權懂|交易個股期權需要注意哪些風險?

期權小懂每日分享期權知識&#xff0c;幫助期權新手及時有效地掌握即市趨勢與新資訊&#xff01; 交易個股期權需要注意哪些風險&#xff1f; 一、交易個股期權需要注意合約到期風險&#xff1a; 需關注到期日&#xff0c;及時平倉或行權&#xff0c;避免合約作廢。二、交易個…

MVC配置文件配置及位置

配置文件位置 默認位置 WEB-INF目錄下&#xff1a;-servlet.xml 指定位置 在web.xml中配置 DispatcherServlet中的contextConfigLocation屬性可以指定配置文件位置 確保配置文件存在于類路徑&#xff08;Resources&#xff09;下 web.xml <?xml version"1.0" …

可視化邏輯表達式編輯器

優質博文&#xff1a;IT-BLOG-CN 一、QueryBuilder介紹 QueryBuilder 是一個用于創建查詢和過濾器的 UI 組件。 QueryBuilder的特點 1、支持的輸入屬性豐富&#xff0c;常見的 字符串&#xff0c;整數&#xff0c;浮點數&#xff0c;布爾類型&#xff0c;日期類型&#xff0…

若依將數據庫更改為SQLite

文章目錄 1. 添加依賴項2. 更新配置文件 application-druid.yml2.1. 配置數據源2.2. 配置連接驗證 3. 更新 MybatisPlusConfig4. 解決 mapper 中使用 sysdate() 的問題4.1. 修改 BaseEntity4.2. 修改 Mapper 5. 更新 YML 配置 正文開始&#xff1a; 前提條件&#xff1a;在您的…

OCP開閉原則

什么是OCP&#xff1f; OCP是軟件七大開發原則當中最基本的一個原則&#xff1a;開閉原則 對什么開&#xff1f;對擴展開放。 對什么閉&#xff1f;對修改關閉。 OCP原則是最核心的&#xff0c;最基本的&#xff0c;其他的六個原則都是為這個原則服務的。 OCP開閉原則的核心是…

Linux下mysql環境的搭建

1.mysql的下載 去MySQL官網下載mysql的linux壓縮包 MySQL :: Download MySQL Community Server 如果下載慢請到網盤中自行下載 通過網盤分享的文件&#xff1a;mysql-8.0.40-1.el7.x86_64.rpm-bundle.tar 鏈接: https://pan.baidu.com/s/1vUJ-VuTwer1nLPT-haQCqw?pwd6342 提…

基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理

基于Qwen2-VL模型針對LaTeX OCR任務進行微調訓練 - 多圖推理 flyfish 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_LoRA配置如何寫 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_單圖推理 基于Qwen2-VL模型針對LaTeX_OCR任務進行微調訓練_-_原模型_單圖推理 基于Q…

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序,GUI界面。附詳細的運行說明。

圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序&#xff0c;GUI界面。附詳細的運行說明。 目錄 圖像識別 | Matlab基于卷積神經網絡(CNN)的寶可夢識別源程序&#xff0c;GUI界面。附詳細的運行說明。預測效果基本介紹程序設計參考資料 預測效果 基本介紹 Matlab基…

設置IMX6ULL開發板的網卡IP的兩種方法(臨時生效和永久有效兩種方法)

設置開發板網卡的IP&#xff0c;有兩種方法。 方法一&#xff1a;臨時生效 第一種方式是臨時設置&#xff0c;只有本次有效&#xff0c;重啟后又要重新設&#xff0c;命令為&#xff1a; ifconfig eth0 192.168.5.9設置成功后可以使用ifconfig命令來查看已設置的 IP 地址。 …

22. Three.js案例-創建旋轉的圓環面

22. Three.js案例-創建旋轉的圓環面 實現效果 知識點 WebGLRenderer (WebGL渲染器) THREE.WebGLRenderer 是Three.js中最常用的渲染器&#xff0c;用于將場景渲染到WebGL畫布上。 構造器 new THREE.WebGLRenderer(parameters) 參數類型描述parametersObject可選參數對象&…

【D3.js in Action 3 精譯_044】5.1 餅圖和環形圖的創建(四):數據標簽的添加

當前內容所在位置&#xff1a; 第五章 餅圖布局與堆疊布局 ?? 5.1 餅圖和環形圖的創建 ?? 5.1.1 準備階段&#xff08;一&#xff09;5.1.2 餅圖布局生成器&#xff08;二&#xff09;5.1.3 圓弧的繪制&#xff08;三&#xff09; ??5.1.4 數據標簽的添加&#xff08;四&…

java全棧day13-后端Web實戰2

接上述查詢部門實現&#xff0c;完成后續要求 一、統一響應結果 1.1步驟 資料如下 對一開始的代碼修改如下 結果如下 1.2測試 指定請求方式 結果 小結 二、前后端聯調測試 資料如下&#xff1a; (不行&#xff0c;一定要不帶空格和不帶中文&#xff0c;要不然啟動不了試了半天…

AWS sdk for s3 - S3 client

背景 在產品環境上通過 http 的方式訪問 aws s3 是不安全的&#xff0c;需要使用aws sdk 提供的接口來訪問 技術實現 項目中使用的是java 1. 在gradel 中引用對應的aws 包 implementation ‘software.amazon.awssdk:s3:2.20.80’ // aws sdk implementation ‘software.am…

Android的SurfaceView和TextureView介紹

文章目錄 前言一、什么是SurfaceView &#xff1f;1.1 SurfaceView 使用示例1.2 SurfaceView 源碼概述1.3 SurfaceView 的構造與初始化1.4 SurfaceHolder.Callback 回調接口1.5 SurfaceView 渲染機制 二、什么是TextureView&#xff1f;2.1 TextureView 使用示例2.2 TextureVie…