[保研/考研機試] KY26 10進制 VS 2進制 清華大學復試上機題 C++實現

題目鏈接:

10進制 VS 2進制icon-default.png?t=N6B9http://www.nowcoder.com/share/jump/437195121691738172415

描述

對于一個十進制數A,將A轉換為二進制數,然后按位逆序排列,再轉換為十進制數B,我們稱B為A的二進制逆序數。 例如對于十進制數173,它的二進制形式為10101101,逆序排列得到10110101,其十進制數為181,181即為173的二進制逆序數。

輸入描述:

一個1000位(即10^999)以內的十進制數。


輸出描述:

輸入的十進制數的二進制逆序數。

示例1


輸入:

173

輸出:

181

思路:

  1. 輸入一個十進制數 s
  2. 使用大整數除法函數 divides 不斷除以 2,得到二進制數的各個位,存放在向量 binary 中,順序是按位逆序排列的。
  3. 初始化一個字符串 res 為 "0",用于存放最終的結果。
  4. 遍歷 binary 中的每一位,將 res 乘以 2(相當于左移一位),然后加上當前位的值,得到二進制逆序數的十進制表示。
  5. 輸出最終的二進制逆序數。

注意:代碼中使用了字符串來表示大整數,通過模擬除法、乘法和加法操作,實現了對二進制逆序數的計算和轉換。

源代碼:

#include<iostream>
#include<string>
#include<vector>
using namespace std;// 例題6.3 KY26 10進制 VS 2進制 // 字符串表示的大整數除法
string divide(string str, int x) {int reminder = 0;  // 余數for (int i = 0; i < str.size(); i++) {int current = reminder * 10 + str[i] - '0';  // 當前位的數值str[i] = current / x + '0';  // 更新當前位的值為商的字符表示reminder = current % x;  // 更新余數}int pos = 0;while (str[pos] == '0') {pos++;  // 移除前導零}return str.substr(pos);  // 返回除法結果,移除前導零
}string multiple(string str, int x) {int carry = 0;  // 進位for (int i = str.size() - 1; i >= 0; i--) {int current = x * (str[i] - '0') + carry;  // 當前位的計算結果str[i] = current % 10 + '0';  // 更新當前位的值為計算結果的個位carry = current / 10;  // 更新進位}if (carry != 0) {str = "1" + str;  // 處理最終的進位}return str;
}string Add(string str, int x) {int carry = x;  // 初始進位為 xfor (int i = str.size() - 1; i >= 0; i--) {int current = (str[i] - '0') + carry;  // 當前位的計算結果str[i] = current % 10 + '0';  // 更新當前位的值為計算結果的個位carry = current / 10;  // 更新進位}if (carry != 0) {str = "1" + str;  // 處理最終的進位}return str;
}int main() {string s;cin >> s;  // 輸入十進制數vector<int> binary;  // 用于存放二進制逆序的每一位while (s.size() != 0) {int last = s[s.size() - 1] - '0';  // 取最后一位binary.push_back(last % 2);  // 將最后一位的余數(二進制的最低位)存入 vectors = divide(s, 2);  // 將十進制數除以 2,得到下一輪迭代的數值}// 將得到的 binary 中的按位逆序排列的二進制數轉換為十進制數string res = "0";  // 初始化結果為 0for (int i = 0; i < binary.size(); i++) {res = multiple(res, 2);  // 將結果乘以 2,相當于左移一位res = Add(res, binary[i]);  // 加上當前位的值}cout << res << endl;  // 輸出最終的二進制逆序數return 0;
}

提交結果:

?

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

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

相關文章

算法基礎課——基礎算法(模板整理)

快速排序 快速排序 #include <iostream> #include <algorithm> using namespace std; int n; int s[100000]; int main() {cin>>n;for(int i0;i<n;i){cin>>s[i];}sort(s,sn);for(int i0;i<n;i){cout<<s[i]<<" ";}cout<…

4.物聯網LWIP之C/S編程

LWIP配置 服務器端實現 客戶端實現 錯誤分析 一。LWIP配置&#xff08;FREERTOS配置&#xff0c;ETH配置&#xff0c;LWIP配置&#xff09; 1.FREERTOS配置 為什么要修改定時源為Tim1&#xff1f;不用systick&#xff1f; 原因&#xff1a;HAL庫與FREERTOS都需要使用systi…

leetcode做題筆記89. 格雷編碼

n 位格雷碼序列 是一個由 2n 個整數組成的序列&#xff0c;其中&#xff1a; 每個整數都在范圍 [0, 2n - 1] 內&#xff08;含 0 和 2n - 1&#xff09;第一個整數是 0一個整數在序列中出現 不超過一次每對 相鄰 整數的二進制表示 恰好一位不同 &#xff0c;且第一個 和 最后一…

C語言好題解析(三)

目錄 選擇題一選擇題二選擇題三選擇題四編程題一編程題二 選擇題一 以下程序段的輸出結果是&#xff08;&#xff09;#include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; }A: 12 B: 13 …

Lnton羚通關于【PyTorch】教程:torchvision 目標檢測微調

torchvision 目標檢測微調 本教程將使用Penn-Fudan Database for Pedestrian Detection and Segmentation 微調 預訓練的Mask R-CNN 模型。 它包含 170 張圖片&#xff0c;345 個行人實例。 定義數據集 用于訓練目標檢測、實例分割和人物關鍵點檢測的參考腳本允許輕松支持添加…

前端-輪詢

一、輪詢定義 輪詢是指在一定的時間間隔內&#xff0c;定時向服務器發送請求&#xff0c;獲取最新數據的過程。輪詢通常用于從服務器獲取實時更新的數據。 二、輪詢和長輪詢區別 輪詢是在固定的時間間隔內向服務器發送請求&#xff0c;即使服務器沒有數據更新也會繼續發送請求…

暴力模擬入門+簡單:零件組裝、塔子的簽到題、塔子哥考試、平均像素值、換座位

暴力模擬入門 P1038 小紅書-2022.9.23-零件組裝 #include <bits/stdc.h> #include <cstdint> using namespace std;typedef long long LL; const int N 100001; int num[4]; LL d; vector<vector<LL>> v(4, vector<LL>(N));int main() {for(in…

解決Pycharm的Settings中Project不見了也無法選擇Python Interpreter的方法

目錄 一、問題如下二、解決方法 一、問題如下 突然打開項目沒有python解釋器&#xff0c;也無法重新配置python Interpreter&#xff0c;而且整個文件夾是黃色高亮的形式&#xff0c;如下顯示&#xff0c;而且重新安裝了pycharm也沒用甚至說打開File–>Setting–>Projec…

日常BUG——普通頁面跳轉tabbar頁面報錯

&#x1f61c;作 者&#xff1a;是江迪呀??本文關鍵詞&#xff1a;日常BUG、BUG、問題分析??每日 一言 &#xff1a;存在錯誤說明你在進步&#xff01; 一、問題描述 微信小程序頁面跳轉的時候出現下面的問題&#xff1a; wx.redirectTo({url: /pages/index/i…

Linux學習之基本指令二

-----緊接上文 在了解cat指令之前&#xff0c;我們首先要了解到Linux下一切皆文件&#xff0c;在學習c語言時我們就已經了解到了 對文件輸入以及讀入的操作&#xff08;向顯示器打印&#xff0c;從鍵盤讀取數據&#xff09;&#xff0c;對于Linux下文件的操作&#xff0c;也是…

算法與數據結構(二十三)動態規劃設計:最長遞增子序列

注&#xff1a;此文只在個人總結 labuladong 動態規劃框架&#xff0c;僅限于學習交流&#xff0c;版權歸原作者所有&#xff1b; 也許有讀者看了前文 動態規劃詳解&#xff0c;學會了動態規劃的套路&#xff1a;找到了問題的「狀態」&#xff0c;明確了 dp 數組/函數的含義&a…

js簡介以及在html中的2種使用方式(hello world)

簡介 javascript &#xff1a;是一個跨平臺的腳本語言&#xff1b;是一種輕量級的編程語言。 JavaScript 是 Web 的編程語言。所有現代的 HTML 頁面都使用 JavaScript。 HTML&#xff1a; 結構 css&#xff1a; 表現 JS&#xff1a; 行為 HTMLCSS 只能稱之為靜態網頁&#xff0…

Rust交叉編譯簡述 —— Arm

使用系統&#xff1a;WSL2 —— Kali(Microsoft Store) 命令列表 rustup target list # 當前官方支持的構建目標架構列表 rustup target add aarch64-unknown-linux-gnu # 添加目標架構sudo apt-get install gcc-13-aarch64-linux-gnu gcc-13-aarch64-linux-gnu # 下載目標工具…

github以及上傳代碼處理

最近在github上傳代碼的時候出現了&#xff1a; /video_parser# git push -u origin main Username for https://github.com: gtnyxxx Password for https://gtny2010github.com: remote: Support for password authentication was removed on August 13, 2021. remote: Plea…

ROS局部路徑規劃器插件teb_local_planner流程梳理(上)

在我之前的文章《ROS導航包Navigation中的 Movebase節點路徑規劃相關流程梳理》中已經介紹過Move_base節點調用局部路徑規劃器插件的接口函數是computeVelocityCommands&#xff0c;接下來&#xff0c;我們就從這個函數入手梳理一下teb_local_planner功能包的工作流程。 ☆注&a…

推薦一個繪圖平臺(可替代Visio)

不廢話&#xff0c;簡易記網址&#xff1a; draw.io 網站會重定向到&#xff1a;https://app.diagrams.net/

編程語言中的++和--運算符介紹

編程語言中的和--運算符介紹 和--是編程語言&#xff08;C/C、JavaScript、Java&#xff09;中的自增&#xff08;加一&#xff09;和自減&#xff08;減一&#xff09;運算符。它們可以應用于變量&#xff0c;并且具有前綴和后綴兩種形式。 前綴形式&#xff1a; variable&…

Databend 開源周報第 106 期

Databend 是一款現代云數倉。專為彈性和高效設計&#xff0c;為您的大規模分析需求保駕護航。自由且開源。即刻體驗云服務&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新進展&#xff0c;遇到更貼近你心意的 Databend 。 數據脫敏 Data…

云原生 AI 工程化實踐之 FasterTransformer 加速 LLM 推理

作者&#xff1a;顏廷帥&#xff08;瀚廷&#xff09; 01 背景 OpenAI 在 3 月 15 日發布了備受矚目的 GPT4&#xff0c;它在司法考試和程序編程領域的驚人表現讓大家對大語言模型的熱情達到了頂點。人們紛紛議論我們是否已經跨入通用人工智能的時代。與此同時&#xff0c;基…

ISBN號碼(NOIP2008 普及組第一題)

ISBN號碼 說明 每一本正式出版的圖書都有一個ISBN號碼與之對應&#xff0c;ISBN碼包括9位數字、1位識別碼和3位分隔符&#xff0c;其規定格式如“x-xxx-xxxxx-x”&#xff0c;其中符號“-”就是分隔符&#xff08;鍵盤上的減號&#xff09;&#xff0c;最后一位是識別碼&#x…