[保研/考研機試] KY103 2的冪次方 上海交通大學復試上機題 C++實現

題目鏈接:

KY103 2的冪次方 icon-default.png?t=N6B9https://www.nowcoder.com/share/jump/437195121691999575955

描述

??? Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。 ??? Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0).? ? ??? Given a positive number n,your task is to present n with the exponential form?which only contains the digits 0 and 2.

輸入描述:

??? For each case, the input file contains a positive integer n (n<=20000).

輸出描述:

??? For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.

中文描述:

每個正數都可以用指數形式表示。例如,137 = 2^7 + 2^3 + 2^0。我們用a(b)的形式表示a^b。那么137可以用2(7)表示 +2(3)+2(0)。 由于 7 = 2^2 + 2 + 2^0 和 3 = 2 + 2^0 ,因此 137 最終由 2(2(2)+2 +2(0))+2(2+2(0)) 表示 +2(0)。 給定一個正數 n,你的任務是將 n 以僅包含數字 0 和 2 的指數形式呈現。

輸入描述:

???? 對于每種情況,輸入文件都包含一個正整數 n (n<=20000)。

輸出描述:

???? 對于每種情況,您應該在一行中輸出 n 的指數形式。請注意,該行中不應有任何額外的空格。

示例1

輸入:

1315

輸出:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

思路:

  1. 首先,定義一個遞歸函數 powTwo,將數字 n 轉換為二進制形式,其中只有 0 和 1。

  2. 在遞歸函數中,處理二進制數,如果某一位為 1,則根據指數規則,將其轉換為對應的 2(a) 形式。

  3. 注意處理特殊情況,例如 2^1 直接表示為 "+2",其他情況通過遞歸處理更高次冪。

  4. 最后,去掉字符串開頭的 "+" 符號,即為所求的指數形式表示。

  5. 在 main 函數中,讀入輸入的正整數 n,并調用遞歸函數 powTwo 輸出結果。

源代碼:

#include <iostream>
#include <vector>
using namespace std;// 定義遞歸函數,將數字 n 轉換為指數形式
string powTwo(int n) {if (n == 0) {return "0";}if (n == 2) {return "2";}vector<int> nums;while (n != 0) {nums.push_back(n % 2); // 將 n 轉換為二進制n /= 2;}string res = "";for (int i = nums.size() - 1; i >= 0; i--) {if (nums[i] == 1) {if (i == 1) {res += "+2"; // 如果是 2^1,直接添加 "+2"}else {res += "+2(" + powTwo(i) + ")"; // 否則遞歸處理更高次冪}}}res.erase(0, 1); // 去掉最前面的 "+"return res;
}int main() {int n;while (cin >> n) {cout << powTwo(n) << endl;}return 0;
}

提交結果:

?

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

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

相關文章

k8s containerd 配置 http訪問harbor image【最新--官方文檔】

不看官方文檔的代價&#xff1a;在搜索了很多中文資料發現配置了都不起作用&#xff0c;浪費了很多時間。 https://github.com/containerd/containerd/blob/main/docs/cri/config.md#registry-configuration The old CRI config pattern for specifying registry.mirrors and…

MySQL8安裝和刪除教程 保姆級(Windows)

下載 官網: mysql官網點擊Downloads->MySQL Community(GPL) Downloads->MySQL Community Server(或者點擊MySQL installer for Windows) Windows下有兩種安裝方式 在線安裝 一般帶有 web字樣 這個需要聯網離線安裝 一般沒有web字樣 安裝 下載好之后,版本號可以不一樣&…

Postman中,既想傳遞文件,還想傳遞多個參數(后端)

需求:既想傳文件又想傳多個參數可以用以下方式實現

Django rest_framework Serializer中的create、Views中的create/perform_create的區別

Django rest_framework Serializer中的create、Views中的create/perform_create的區別 對于后端來說&#xff0c;前后端分離的方式能讓前后端的開發都爽。和所有的爽一樣&#xff0c;每爽一次都要付出一定的代價。而前后端分離的代價&#xff0c;就是后端要面對巨量的模塊化的功…

C語言實現插入排序

什么是插入排序&#xff1f; 插入排序&#xff08;Insertion Sort&#xff09; 是一種簡單且逐步構建有序序列的排序算法。它的思想是將數組分為兩部分&#xff1a;已排序的部分和未排序的部分。初始時&#xff0c;已排序部分只包含數組的第一個元素&#xff0c;然后逐步將未排…

Process.Start 報錯

Process.Start 報錯 System.Diagnostics.Process.StartWithShellExecuteEx Process.Start 為什么會引發“系統找不到指定的文件”異常 Process.Start 報錯 找不到路徑 ,System.ComponentModel.Win32Exception:“系統找不到指定的文件。 問題1、 在WinForm中可能是權限問題&…

做了這件事,精準拿捏企業資產管理!

資產管理系統是一種為組織和個人提供管理各類資產的重要工具。無論是金融資產還是實物資產&#xff0c;這些都構成了一個實體或個人財務狀況的重要組成部分。 無論是企業尋求優化其固定資產維護&#xff0c;還是個人希望更好地管理他們的投資組合&#xff0c;資產管理系統在現代…

NZ系列工具NZ02:VBA讀取PDF使用說明

【分享成果&#xff0c;隨喜正能量】時光綻放并蒂蓮&#xff0c;更是一份殷殷囑托&#xff0c;更是一份誠摯祝福&#xff0c;是一份時光饋贈&#xff0c;又是一份時光陪伴。。 我的教程一共九套及VBA漢英手冊一部&#xff0c;分為初級、中級、高級三大部分。是對VBA的系統講解…

“深入解析JVM:探索Java虛擬機的工作原理與優化技巧“

標題&#xff1a;深入解析JVM&#xff1a;探索Java虛擬機的工作原理與優化技巧 摘要&#xff1a;本文將深入探討Java虛擬機&#xff08;JVM&#xff09;的工作原理、內部結構以及如何優化Java應用程序的性能。我們將介紹JVM的主要組件&#xff0c;包括類加載器、運行時數據區域…

關于openssl SM2 ECC以及密鑰生成和簽名驗簽

SM2是基于ECC的國密算法,本身也是ECC算法。 openssl生成ECC公私鑰并簽名驗簽 #!/bin/sh openssl ecparam -genkey -name prime256v1 -out private.pem #print pri #openssl ec -in private.pem -text -noout openssl ec -in private.pem -pubout -out public.pem #gen test.…

uniapp+uview封裝小程序請求

提要&#xff1a; uniapp項目引入uview庫 此步驟不再闡述 1.創建環境文件 env.js&#xff1a; let BASE_URL;if (process.env.NODE_ENV development) {// 開發環境BASE_URL 請求地址; } else {// 生產環境BASE_URL 請求地址; }export default BASE_URL; 2.創建請求文件 該…

QLExpress動態腳本引擎解析工具

介紹 QLExpress腳本引擎 1、線程安全&#xff0c;引擎運算過程中的產生的臨時變量都是threadlocal類型。 2、高效執行&#xff0c;比較耗時的腳本編譯過程可以緩存在本地機器&#xff0c;運行時的臨時變量創建采用了緩沖池的技術&#xff0c;和groovy性能相當。 3、弱類型腳本…

廣西Geotrust單位多域名https證書推薦

Geotrust是國際知名CA認證機構&#xff0c;根證書是Digicert&#xff0c;還有RapidSSL、QuickSSL等子品牌&#xff0c;擁有多種類型的多域名https證書&#xff0c;比如OV企業型https證書和EV增強型多域名https證書。那么&#xff0c;哪種多域名https證書更適合企事業單位使用呢…

SpringBoot復習:(43)如何以war包的形式運行SpringBoot程序

一、.pom.xml配置packging為war <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…

Android 內存泄漏

名詞解釋 內存泄漏:即memory leak。是指內存空間使用完畢后無法被釋放的現象&#xff0c;雖然Java有垃圾回收機制&#xff08;GC&#xff09;&#xff0c;但是對于還保持著引用&#xff0c; 該內存不能再被分配使用&#xff0c;邏輯上卻已經不會再用到的對象&#xff0c;垃圾回…

react如何實現數據渲染

React數據渲染是指將組件中的數據映射到頁面上&#xff0c;以展示出來。在React中&#xff0c;數據渲染通常是通過JSX和組件的state或props完成的。 JSX是一個類似HTML的語法&#xff0c;可以在其中嵌入JavaScript表達式。在JSX中&#xff0c;可以使用{}包裹JavaScript表達式&…

解決C語言中使用scanf輸入字符串導致for循環失效的問題

在C語言編程中&#xff0c;使用scanf函數輸入字符串是一項基本操作。然而&#xff0c;當我們嘗試在for循環中使用scanf輸入字符串時&#xff0c;可能會遇到意外的問題&#xff0c;導致循環無法正常執行。本文將深入探討這個問題&#xff0c;并提供解決方案&#xff0c;讓你能夠…

考公-判斷推理-定義判斷

第九節課 例題 例題 例題 例題 例題 例題 腳一滑&#xff0c;就是工傷&#xff0c;這難道不是操作不當嗎 例題 不要較真&#xff0c;公務員&#xff0c;把沒有全局觀念的人排除在公務員隊伍之外 例題 例題 下次看到不字&#xff0c;先給我畫上 例題 例題 例題 例題…

微信群聊微信機器人實現流程

1.注冊微信賬號 要使用一個微信機器人賬號來實現在微信群聊中的自動回復功能&#xff0c;你需要注冊一個專門用于機器人的微信賬號。 注冊微信機器人賬號的步驟如下&#xff1a; 下載微信&#xff1a;在手機或者電腦上下載并安裝微信應用程序。創建新賬號&#xff1a;打開微信…

力扣63.不同路徑II(動態規劃)

/*** author Limg* date 2022/08/09* 一個機器人位于一個 m x n 網格的左上角 &#xff08;起始點在下圖中標記為 “Start” &#xff09;。* 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角&#xff08;在下圖中標記為 “Finish”&#xff09;。* 現在考慮網…