【馬蹄集】第二十三周——進位制專題

進位制專題



目錄

  • MT2186 二進制?不同!
  • MT2187 excel的煩惱
  • MT2188 單條件和
  • MT2189 三進制計算機1
  • MT2190 三進制計算機2




MT2186 二進制?不同!

難度:黃金 ?? 時間限制:1秒 ?? 占用內存:128M
題目描述

小碼哥是一個對數很敏感的人,即使給他很多個很像的數串,他都能找出沒有出現過的數串。
或許是有些無聊,小碼哥給你一個字符串數組 nums,里面包含 n n n 個二進制字符串(長度都為 n n n ),現請你找出不在數組中的二進制字符串。若有多解,返回對應十進制最小的一個。

格式

輸入格式:一行二進制字符串數組,字符串之間以空格分割;
輸出格式:一個不在數組中的二進制字符串。

樣例 1

輸入:01 10

輸出:00

備注

其中: 1 ≤ n ≤ 16 1 \le n \le 16 1n16,nums中所有字符互不相同。


相關知識點:進位制


題解


本題要求找出尚未在輸入數據中出現的最小值(所有數據的最小取值為 0)。但是題目給出的數據為二進制字符串(合法的),因此為了找出最小未出現的數,我們需要先將所有輸入的二進制字符串轉換為十進制數,并將這些數存放進一個集合 nums 中。接下來,從 0 開始逐步向后枚舉整數,一旦存在某個數不在集合 nums 中,就說明這個數是尚未在輸入數據中出現的最小數。注意:我們還需對這個數進行格式轉換!即將這個數由十進制再轉換為二進制字符串(長度需要和輸入數據的長度一致)。

下面直接給出求解此題的完整代碼(已 AC):

/*MT2186 二進制?不同! 測試數據:001 100 000  
*/
#include<bits/stdc++.h> 
using namespace std;set<int> nums;// 該函數將(合法的)二進制數字串轉換為十進制數字 
int getDecFromBin(string str)
{int sum = 0, base = 1;for(int i=str.size()-1; i>=0; i--){sum += base*(str[i]-'0');base *= 2;}return sum;
} // 將一個十進制數轉換為指定長度的二進制字符串
string toBinary(int n, int len)
{string str = "";while(len--){if(n&1) str = "1"+str;else str = "0"+str;n >>= 1;}return str;
} int main( )
{// 輸入數據string str;while(cin>>str)nums.insert(getDecFromBin(str));// 記錄當前輸入二進制字符串的長度int binStrlen = str.length();// 尋找最小值,并在進行格式轉換后輸出 for(int i=0; ; i++){// 找到一個尚未在集合中出現的最小數值if(nums.find(i) == nums.end()){cout<<toBinary(i, binStrlen)<<endl;break;}}return 0;
}



MT2187 excel的煩惱

難度:鉆石 ?? 時間限制:2秒 ?? 占用內存:128M
題目描述

你用過 Excel 么?
在 excel 中,第一列被標為 A,第二列為 B,以此類推,第 26 列為 Z。接下來為由兩個字母構成的列號:第 27 列為 AA,第 28 列為 AB……在標為 ZZ 的列之后則由三個字母構成列號,如此類推。
行號為從 1 開始的整數。
單元格的坐標由列號和行號連接而成。比如,BC23 表示位于第 55 列 23 行的單元格。
有時也會采用被稱為 RXCY 的坐標系統,其中 X 與 Y 為整數,坐標 (X, Y) 直接描述了對應單元格的位置。比如,R23C55 即為前面所述的單元格。
小碼哥請你編寫一個程序,將所給的單元格坐標轉換為另一種坐標系統下面的形式。

格式

輸入格式:第一行一個整數 T(1≤T≤10^5) 表示將有 T 次詢問;
?????接下來 T 行,每行一個坐標。
輸出格式:輸出 T 行,每行一個被轉換的坐標。

樣例 1

輸入:3
???R12C3
???AE32
???BB11

輸出:C12
???R32C31
???R11C54

備注

每個坐標都是正確的。保證輸入輸出數據均在int范圍內。輸入輸出數據字母部分均為大寫。


相關知識點: 進位制


題解


這道題表面是在對兩種坐標形式進行轉換,但實際上也是在考察進制轉換。例如,對于 excel 形式的坐標,其列號 BC 對應在十進制中為 55( 2 × 2 6 1 + 3 × 2 6 0 = 55 2×26^1+3×26^0=55 2×261+3×260=55),所以題中將 BC23 解析為第 55 行第 23 列的單元格。因此,這里的進制轉換問題實際上是十進制與以 A ? Z A-Z A?Z 表達的二十六進制數之間的互相轉換。

對于本題,由于輸入數據并沒有說明其具體是哪一種形式的坐標表達,因此我們需要做的第一件事是識別坐標格式。觀察兩種形式的坐標不難發現,excel 形式的坐標是 “字母+數字”,而 RXCY 形式的坐標是 “字母+數字+字母+數字”,這兩種形式的本質區別在于:RXCY 的格式中,會在數字的后面出現字母;而 excel 形式下,數字后面不可能出現字母。因此可以根據這一本質區別進行格式識別,并在后續進行格式轉換。

當完成了對輸入坐標字符串的格式檢測后,便能分別進行格式轉換了。具體的轉換過程并不難(詳細細節可看這之后的例題:MT2189 三進制計算機1、MT2190 三進制計算機2),下面直接給出求解本題的完整代碼(已 AC):

/*MT2187 excel的煩惱 
*/
#include<bits/stdc++.h> 
using namespace std;string str;
int T;
char apt[] = " ABCDEFGHIJKLMNOPQRSTUVWXYZ";// 檢測當前的坐標字符串屬于那種格式:
// 0 EXCEL 格式 
// 1 RXCY  格式
bool getFormat(string str)
{bool flag = 0;int strlen = str.length();for(int i=0; i<strlen; i++) {// 數字出現標記 if(isdigit(str[i]))flag = true;// 檢測是否為 RXCY 模式if(flag && str[i]=='C')return true;}return false;
} // 格式轉換 
void transform(string str)
{// 格式識別bool mode =  getFormat(str);// 格式轉換 int row = 0, col = 0, len = str.length();if(mode){ // mode 1:RXCY 轉 ECXCEL 格式 // 定位 R 與 C 所在位置 int R = str.find("R"), C = str.find("C");// 取出行號和列號 for(int i=R+1; i<C; i++) row = row*10+str[i]-'0';for(int i=C+1; i<len; i++)col = col*10+str[i]-'0';// 將十進制數轉換為以 A-Z 表達的二十六進制數 int tmp;string ans;while(col > 0){tmp = col%26;if(tmp == 0){tmp = 26;col -= 26;}ans += apt[tmp];col /= 26;} reverse(ans.begin(), ans.end());// 格式化輸出 cout<<ans<<row<<endl;}else{	// mode 0:ECXCEL 轉 RXCY 格式 // 將二十六進制數轉換為十進制數 for(int i=0; i<len; i++)if(!isdigit(str[i]))col = col*26+str[i]-'A'+1;elserow = row*10+str[i]-'0';// 格式化輸出 cout<<"R"<<row<<"C"<<col<<endl;}
}int main( )
{// 輸入數據cin>>T;for(int i=1; i<=T; i++){cin>>str;// 將當前的坐標表達式轉換為另一種格式 transform(str);}return 0;
}


MT2188 單條件和

難度:黃金 ?? 時間限制:1秒 ?? 占用內存:128M
題目描述

“單條件” 是數理邏輯中的5種常用連接詞之一,記作 “→”。它是二元運算。相當于 “如果…那么…. ”、“因為……所以……”、“只要…就.….” 等。也可稱為 “蘊涵”。“p→q” 讀作 “如果p,那么q”,其中 p 稱為前件,q 稱為后件。

其真值表如下:

單條件真值表

如 “異或和” 為 a 1 ? a 2 ? … ? a n a_1?a_2?…?a_n a1??a2???an? ,我們現在要求 “單條件和”,即 a 1 → a 2 → ? → a n a_1→a_2→?→a_n a1?a2??an?,對 a 1 , a 2 , … , a n a_1,a_2,…,a_n a1?,a2?,,an? 做位意義上的單條件運算求和。
請按 unsigned int 類型進行運算。

格式

輸入格式:第一行一個整數 n n n,表示有 n n n 個需要求單條件和的整數;
?????第二行輸入 n n n 個需要求單條件和的整數。
輸出格式:輸出一個 unsigned int 型的整數。

樣例 1

輸入:10
???1 2 3 4 5 6 7 8 9 10

輸出:4294967290

備注

對于100%的數據: 1 ≤ n ≤ 5 e 6 1≤n≤5e6 1n5e6


相關知識點:位運算


題解


觀察題目給出的真值表不難發現:“p→q” 其實等價于執行位運算 “~p|q”(非 p 或 q)。在理解這一點后,我們便能直接寫出以下代碼:

/*MT2188 單條件和 用 scanf 接受輸入才能得滿分 
*/
#include<bits/stdc++.h> 
using namespace std;int main( )
{// 輸入數據int n;unsigned ans, tmp;cin>>n>>ans;// 執行運算for(int i=1; i<n; i++) {scanf("%u",&tmp);ans = ~ans | tmp;}// 輸出 cout<<ans<<endl; return 0;
}


MT2189 三進制計算機1

難度:黃金 ?? 時間限制:1秒 ?? 占用內存:128M
題目描述

三進制計算機,是以三進法數字系統為基礎而發展的計算機。在光子計算機研究領域也有涉及。
三進制代碼的一個特點是對稱,即相反數的一致性,因此它和二進制代碼不同,不存在無符號數的概念。這樣,三進制計算機的架構也要簡單、穩定、經濟得多。其指令系統也更便于閱讀,而且非常高效。
在一般情況下,命題不一定為真或假,還可能為未知。在三進制邏輯學中,符號 1 代表真;符號 -1 代表假;符號 0 代表未知。這種邏輯表達方式更符合計算機在人工智能方面的發展趨勢,它為計算機的模糊運算和自主學習提供了可能。
在本題中,請你將輸入的對稱三進制數轉換為對應的十進制數。對稱三進制數不是用 0/1/2 表示,比較特殊,是用 1/0/-1 表示,故名對稱。本題中 -1 用符號 - 表示,而 1 和 0 直接表示即可。

格式

輸入格式:第一輸入一個整數 n n n ,表示數據組數;
?????接下來 n n n 行,每行輸入一個對稱三進制整數。
輸出格式:對于第 2~n+1 行輸入的每一個對稱三進制整數,分別輸出其十進制形式。

樣例 1

輸入:8
???-0
???-1
???-
???0
???1
???1-
???10
???1–

輸出:-3
???-2
???-1
???0
???1
???2
???3
???5

備注

樣例中 2 = 3 ? 1 , 3 = 3 + 0 × 1 , 5 = 9 ? 3 ? 1 2=3-1,3=3+0 \times 1,5=9-3-1 2=3?13=3+0×15=9?3?1
對于100%的數據: 1 ≤ n ≤ 1 e 6 1≤n≤1e6 1n1e6,輸入的對稱三進制數對應的整數在 int 類型范圍內


相關知識點:平衡三進制


題解


這道題實際上考察的是進制轉換,即平衡三進制轉換為十進制數。

首先我們要知道,任意 k k k 進制數(設為 A k = a 1 a 2 ? a n A_k=a_1 a_2?a_n Ak?=a1?a2??an?)轉換為十進制都遵循下式:

n = ∑ i = 1 n a i k n ? i n=\sum_{i=1}^na_i k^{n-i} n=i=1n?ai?kn?i

其中, a i a_i ai? 表示該 k k k 進制數在第 i i i 位上的取數, n n n 表示其長度。

例如,二進制數 1010 轉換為十進制數為:

n = a 1 k 4 ? 1 + a 2 k 4 ? 2 + a 3 k 4 ? 3 + a 4 k 4 ? 4 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 0 × 2 0 = 10 n=a_1 k^{4-1}+a_2 k^{4-2}+a_3 k^{4-3}+a_4 k^{4-4}=1×2^3+0×2^2+1×2^1+0×2^0=10 n=a1?k4?1+a2?k4?2+a3?k4?3+a4?k4?4=1×23+0×22+1×21+0×20=10

十六進制數 AE86 轉換為十進制數為:

n = a 1 k 4 ? 1 + a 2 k 4 ? 2 + a 3 k 4 ? 3 + a 4 k 4 ? 4 = 10 × 1 6 3 + 14 × 1 6 2 + 8 × 1 6 1 + 6 × 1 6 0 = 44678 n=a_1 k^{4-1}+a_2 k^{4-2}+a_3 k^{4-3}+a_4 k^{4-4}=10×16^3+14×16^2+8×16^1+6×16^0=44678 n=a1?k4?1+a2?k4?2+a3?k4?3+a4?k4?4=10×163+14×162+8×161+6×160=44678

同樣地,三進制數也滿足該式。但是本題比較特殊,因為平衡三進制數中的 2 會用 -1 來表示,但這并不影響通式給出的計算方法。例如,對于題目給出的平衡三進制數:1--,其轉換過程如下:

n = a 1 k 3 ? 1 + a 2 k 3 ? 2 + a 3 k 3 ? 3 = 1 × 3 2 + ( ? 1 ) × 3 1 + ( ? 1 ) × 3 0 = 9 ? 3 ? 1 = 5 n=a_1 k^{3-1}+a_2 k^{3-2}+a_3 k^{3-3}=1×3^2+(-1)×3^1+(-1)×3^0=9-3-1=5 n=a1?k3?1+a2?k3?2+a3?k3?3=1×32+(?1)×31+(?1)×30=9?3?1=5

根據這樣的思路,可寫出求解本題的完整代碼:

下面給出基于以上思路寫出的完整代碼(已 AC):

/*MT2189 三進制計算機1  輸出轉換結果時不能用 endl ,否則會超時 
*/
#include<bits/stdc++.h> 
using namespace std;const int N = 105;
int w[N], n, ans, len;
char s[N];int main( )
{// 取消cin與stdin的同步(加速文件讀取速度) ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);// 輸入數據cin>>n; // 構建乘位 w[0] = 1;for(int i=1; i<=100; i++)w[i] = w[i-1]*3;// 進制轉換與輸出 while(n--){cin>>s;ans = 0;len = strlen(s);// 進制轉換 for(int i=len-1; i>=0; i--){if(s[i] == '1') ans += w[len-1-i];if(s[i] == '-') ans -= w[len-1-i];}// 輸出轉換結果cout<<ans<<"\n";}return 0;
}

此外,對本題而言還需要特別注意兩點:

  1. 必須取消 cin 與 stdin 的同步以加速文件讀取速度,否則會超時(原理請見:C++中輸入和輸出的一些問題);
  2. 輸出換行時必須用 “\n” 替代 “endl”,否則會超時。

當然,你也可以用 C 的方式進行數據輸入輸出(即用scanf和printf替代cin和cout),這樣就不必擔心上面的這些問題。



MT2190 三進制計算機2

難度:鉆石 ?? 時間限制:1秒 ?? 占用內存:128M
題目描述

三進制計算機,是以三進法數字系統為基礎而發展的計算機。在光子計算機研究領域也有涉及。
三進制代碼的一個特點是對稱,即相反數的一致性,因此它和二進制代碼不同,不存在無符號數的概念。這樣,三進制計算機的架構也要簡單、穩定、經濟得多。其指令系統也更便于閱讀,而且非常高效。
在一般情況下,命題不一定為真或假,還可能為未知。在三進制邏輯學中,符號 1 代表真;符號 -1 代表假;符號 0 代表未知。這種邏輯表達方式更符合計算機在人工智能方面的發展趨勢,它為計算機的模糊運算和自主學習提供了可能。
在本題中,請你將輸入的對稱三進制數轉換為對應的十進制數。對稱三進制數不是用 0/1/2 表示,比較特殊,是用 1/0/-1 表示,故名對稱。本題中 -1 用符號 - 表示,而 1 和 0 直接表示即可。

格式

輸入格式:第一輸入一個整數 n n n ,表示數據組數;
?????接下來 n n n 行,每行輸入一個十進制整數。
輸出格式:對于第 2~n+1 行輸入的每一個十進制整數,分別輸出其對稱三進制形式。

樣例 1

輸入:8
???-3
???-2
???-1
???0
???1
???2
???3
???5

輸出:-3
???-0
???-1
???-
???0
???1
???1-
???10
???1–

備注

樣例中 2 = 3 ? 1 , 3 = 3 + 0 × 1 , 5 = 9 ? 3 ? 1 2=3-1,3=3+0 \times 1,5=9-3-1 2=3?13=3+0×15=9?3?1
對于100%的數據: 1 ≤ n ≤ 1 e 6 1≤n≤1e6 1n1e6,輸入的對稱三進制數對應的整數在 int 類型范圍內


相關知識點:平衡三進制


題解


這道題與前一題的要求剛好相反,即要求將輸入的每個十進制數轉換為對稱三進制數并輸出。
首先我們要知道,任意十進制數 n n n 轉換為 k k k 進制都遵循一個過程:

  1. 當前位取數為:n%k;
  2. 為繼續向后取數(即得到更高位的數),更新數 n = n k n=\frac{n}{k} n=kn?
  3. 若 n = 0 ,則轉換結束。

例如,將十進制數 10 轉換為二進制數的過程如下:

  • 第1位: n % 2 = 10 % 2 = 0 n\%2 = 10\%2 = 0 n%2=10%2=0,更新 n = n 2 = 10 2 = 5 n=\frac{n}{2}=\frac{10}{2}=5 n=2n?=210?=5
  • 第2位: n % 2 = 5 % 2 = 1 n\%2 = 5\%2 = 1 n%2=5%2=1,更新 n = n 2 = 5 2 = 2 n=\frac{n}{2}=\frac{5}{2}=2 n=2n?=25?=2
  • 第3位: n % 2 = 2 % 2 = 0 n\%2 = 2\%2 = 0 n%2=2%2=0,更新 n = n 2 = 2 2 = 1 n=\frac{n}{2}=\frac{2}{2}=1 n=2n?=22?=1
  • 第4位: n % 2 = 1 % 2 = 1 n\%2 = 1\%2 = 1 n%2=1%2=1,更新 n = n 2 = 1 2 = 0 n=\frac{n}{2}=\frac{1}{2}=0 n=2n?=21?=0,轉換結束。

于是得到十進制數 10 對應的二進制數為 1010。

同樣地,將十進制數轉換為三進制數也遵循該算法,例如,將十進制數 11 轉換為三進制數的過程如下:

  • 第1位: n % 3 = 11 % 3 = 2 n\%3 = 11\%3 = 2 n%3=11%3=2,更新 n = n 3 = 11 3 = 3 n=\frac{n}{3}=\frac{11}{3}=3 n=3n?=311?=3
  • 第2位: n % 3 = 3 % 3 = 0 n\%3 = 3\%3 = 0 n%3=3%3=0,更新 n = n 3 = 3 3 = 1 n=\frac{n}{3}=\frac{3}{3}=1 n=3n?=33?=1
  • 第3位: n % 3 = 1 % 3 = 1 n\%3 = 1\%3 = 1 n%3=1%3=1,更新 n = n 3 = 1 3 = 0 n=\frac{n}{3}=\frac{1}{3}=0 n=3n?=31?=0,轉換結束。

于是得到十進制數 11 對應的三進制數為 102。

而本題要求轉換的 “平衡三進制” 中,所有的 “2” 都要求用 “-1” 來替代。這一替換實際上相當于將指定位上的值減少了 1(從這個數的整體來看,實際上減少了 1 × k p 1×k^p 1×kp),為了保證這個數在整體上的值不變,就必須向前一位借位,即將這個位前的那個值加 1。例如,由十進制數 11 得到的三進制數為 102,我們從該數的低位向高位掃描:首先,末尾存在一個 “2”,于是將這個數替換為 “-”,并將較高位的 “0” 替換為 “1”(即得到 11-);接繼續向后掃描,發現整個序列中的數均合法,于是得到由十進制數 11 轉換的平衡三進制數為 11-。我們可以進行驗證:

n = a 1 k 3 ? 1 + a 2 k 3 ? 2 + a 3 k 3 ? 3 = 1 × 3 2 + 1 × 3 1 + ( ? 1 ) × 3 0 = 9 + 3 ? 1 = 11 n=a_1 k^{3-1}+a_2 k^{3-2}+a_3 k^{3-3}=1×3^2+1×3^1+(-1)×3^0=9+3-1=11 n=a1?k3?1+a2?k3?2+a3?k3?3=1×32+1×31+(?1)×30=9+3?1=11

考慮一種情況,三進制數 122。當將末位的 “2” 借位后,中間位的 “2” 將變成數字 “3”,即此時為 13-;對中間位而言,“3” 已經達到了這個進制下的最大值,因此要進位,于是此時該數將變為 20-;繼續向高位掃描,發現最高位為 “2”,因此需要將其轉換為 “-”,并向較高位借位,故最終得到 1-0-。我們可以進行驗算:

122 : n = 1 × 3 2 + 2 × 3 1 + 2 × 3 0 = 9 + 6 + 2 = 17 122:n=1×3^2+2×3^1+2×3^0=9+6+2=17 122n=1×32+2×31+2×30=9+6+2=17
1 ? 0 ? : n = 1 × 3 3 + ( ? 1 ) × 3 2 + 0 × 3 1 + ( ? 1 ) × 3 0 = 17 1-0-:n=1×3^3+(-1)×3^2+0×3^1+(-1)×3^0=17 1?0?n=1×33+(?1)×32+0×31+(?1)×30=17

可以看出,他們最終轉換為十進制均為 17。

最后還需要注意一點:平衡三進制的負數與正數之間的轉換關系。實際上,題目也給出了他們之間關系的一些提示:“三進制代碼的一個特點是對稱,即相反數的一致性”。對于平衡三進制的數而言,它的相反數與其本身的關系如下:所有非 0 數據互相相反。例如,平衡三進制數 1-01,它對應的負數則為 -10-

1 ? 01 : n = 1 × 3 3 + ( ? 1 ) × 3 2 + 0 × 3 1 + 1 × 3 0 = 27 ? 9 + 0 + 1 = 19 1-01:n=1×3^3+(-1)×3^2+0×3^1+1×3^0=27-9+0+1=19 1?01n=1×33+(?1)×32+0×31+1×30=27?9+0+1=19
? 10 ? : n = ( ? 1 ) × 3 3 + 1 × 3 2 + 0 × 3 1 + ( ? 1 ) × 3 0 = ? 27 + 9 + 0 ? 1 = ? 19 -10-:n=(-1)×3^3+1×3^2+0×3^1+(-1)×3^0=-27+9+0-1=-19 ?10?n=(?1)×33+1×32+0×31+(?1)×30=?27+9+0?1=?19

根據上面的分析,可以將求解本題的思路整理如下:

  1. 將輸入的十進制數轉換為對應的三進制數(為便于處理,這一階段將統一使用該數的正數);
  2. 將三進制數轉換為平衡三進制數,轉換規則如下(假設當前的三進制數字符串為num):
    • 若 num[i] = 2,則令 num[i] = -, num[i+1]++(數字串的索引大小與數的低位到高位對應);
    • 若 num[i] = 3,則令 num[i] = 0, num[i+1]++。
  3. 根據輸入十進制數的正負性,對得到的平衡三進制數進行相應處理。

下面給出基于以上思路得到的完整代碼(已 AC):

/*MT2190 三進制計算機2  思路:先將數從十進制轉換至正常的三進制,然后再轉換為平衡三進制 
*/
#include<bits/stdc++.h> 
using namespace std;const int N = 55;
int num[N], n, x, flag, cnt;int main( )
{// 取消cin與stdin的同步(加速文件讀取速度) ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);// 輸入數據cin>>n; while(n--){cin>>x;memset(num, 0, sizeof(num));flag = 1, cnt = 0;// 程序將統一處理正數,因此定義標記來記錄原始輸入數據的正負性 if(x<0){flag = -1;x = -x;}if(x == 0){cout<<x<<"\n";continue;} // 將十進制數轉換為三進制數 while(x){num[cnt++] = x%3;x /= 3;}// 將三進制數轉換為平衡三進制數 for(int i=0; i<cnt; i++){if(num[i] == 2){// 借位 num[i] = -1;num[i+1]++;}else if(num[i] == 3){// 進位 num[i] = 0;num[i+1]++; }}// 判斷原始三進制數轉換為平衡三進制數后是否出現了位增情況 if(num[cnt]) cnt++;// 如果原始輸入的十進制數為負數,則需要對已經算出的平衡三進制數進行反號 if(flag == -1) for(int i=cnt-1; i>=0; i--)num[i] = -num[i];// 輸出轉換后的平衡三進制數,需要進行格式控制:所有的-1都輸出- for(int i=cnt-1; i>=0; i--)if(num[i] == -1) cout<<"-";else cout<<num[i];cout<<"\n";}return 0;
}

END


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

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

相關文章

Kotlin的Map

在 Kotlin 中&#xff0c;Map 是一種鍵值對的集合數據結構&#xff0c;用于存儲一組關聯的鍵和值。Kotlin 標準庫提供了 Map 接口和多種實現類&#xff0c;使得操作和處理鍵值對數據更加方便。下面詳細描述 Kotlin 的 Map 的用法&#xff1a; 創建 Map Kotlin 提供了幾種方式…

SQL力扣練習(十一)

目錄 1.樹節點(608) 示例 1 解法一(case when) 解法二(not in) 2.判斷三角形(610) 示例 1 解法一(case when) 解法二(if) 解法三(嵌套if) 3.只出現一次的最大數字(619) 示例 1 解法一(count limit) 解法二(max) 4.有趣的電影(620) 解法一 5.換座位(626) 示例 …

同步jenkinsfile流水線(sync-job)

環境 變量&#xff1a;env&#xff08;環境變量&#xff1a;sit/dev/simulation/prod/all&#xff09;&#xff0c;job&#xff08;job-name/all&#xff09;目錄&#xff1a;/var/lib/jenkins/jenkinsfile environment.json&#xff1a; [roottest-01 jenkinsfile]# cat env…

C++ string類的模擬實現

模擬實現string類不是為了造一個更好的輪子&#xff0c;而是更加理解string類&#xff0c;從而來掌握string類的使用 string類的接口設計繁多&#xff0c;故而不會全部涵蓋到&#xff0c;但是核心的會模擬實現 庫中string類是封裝在std的命名空間中的&#xff0c;所以在模擬…

webpack5和webpack4的一些區別

自動清除打包目錄 webpack4 // bash npm i clean-webpack-plugin -D //webpack.config.js const {CleanWebpackPlugin} require(clean-webpack-plugin); module.exports {plugins: [new CleanWebpackPlugin()} } webpack5 module.exports {output: {clean: true} } topLevel…

使用PostgreSQL構建強大的Web應用程序:最佳實踐和建議

PostgreSQL是一個功能強大的開源關系型數據庫,它擁有廣泛的用戶群和活躍的開發社區。越來越多的Web應用選擇PostgreSQL作為數據庫 backend。如何充分利用PostgreSQL的特性來構建健壯、高性能的Web應用?本文將給出一些最佳實踐和建議。 一、選擇合適的PostgreSQL數據類型 Pos…

【Vue】Mixin 混入

Vue Mixin 混入 1.簡介 混入&#xff08;mixin&#xff09;提供了一種非常靈活的方式&#xff0c;來分發 Vue 組件中的可復用功能。一個混入對象可以包含任意組件選項&#xff08;如data、methods、mounted等等&#xff09;。當組件使用混入對象時&#xff0c;所有混入對象的…

Java將時間戳轉化為特定時區的日期字符串

先上代碼&#xff1a; ZonedDateTime dateTime ZonedDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()),zone ); //2019-12-01T19:01:4608:00String formattedDate dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd") ); //2019-12-…

.git內存清理方式

查看前15個大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk {print$1})"刪除文件夾&#xff08;public/housimg文件夾目錄&#xff09; git filter-branch --tree-filter rm -rf publ…

解決使用element ui時el-input的屬性type=number,仍然可以輸入e的問題。

使用element ui時el-input的屬性typenumber&#xff0c;仍然可以輸入e&#xff0c; 其他的中文特殊字符都不可以輸入&#xff0c;但是只有e是可以輸入的&#xff0c;原因是e也輸入作為科學計數法的時候&#xff0c;e是可以被判定為數字的&#xff0c; 但是有些場景是需要把e這種…

DICOM圖像的常用一些參數解析

醫學圖像DICOM醫學影像文件格式詳解 Dicom文件基本操作 DICOM圖像參數&#xff1f; 像素&#xff1a;構成圖片的小色點。圖像每個維度的像素個數——該維度一共有多少個均勻分布的像素點。 分辨率&#xff08;單位DPI&#xff09;&#xff1a;每英寸&#xff08;Inch&#xf…

鴻蒙剝離 AOSP 不兼容 Android 熱門問題匯總,不吹不黑不吵

上周發了一篇 《鴻蒙終于不套殼了&#xff1f;純血 HarmonyOS NEXT 即將到來》的相關資訊&#xff0c;沒想到大家「討&#xff08;fa&#xff09;論&#xff08;xie&#xff09;」的熱情很高&#xff0c;莫名蹭了一波流量&#xff0c;雖然流量對我來說也沒什么用&#xff0c;但…

私密數據采集:隧道爬蟲IP技術的保密性能力探究

作為一名專業的爬蟲程序員&#xff0c;今天要和大家分享一個關鍵的技術&#xff0c;它能夠為私密數據采集提供保密性能力——隧道爬蟲IP技術。如果你在進行敏感數據采集任務時需要保護數據的私密性&#xff0c;那么這項技術將是你的守護神。 在進行私密數據采集任務時&#xff…

不了解UI設計需要掌握的技能? 優漫動游

很多人聽說過UI設計行業&#xff0c;知道它是用來制作界面的高薪技術&#xff0c;但對于做UI設計需要什么技能卻不是很清楚。且看本文的分析。? 不了解UI設計需要掌握的技能&#xff1f; ??UI設計是英文User和interface的縮寫&#xff0c;是指對軟件的人機交互、操作邏輯、界…

Java基礎知識題(二)

系列文章目錄 Java基礎知識題(一) 文章目錄 系列文章目錄 前言 1. Java中的 組合、聚合和關聯有什么區別&#xff1f; 2. 解釋為什么Java被稱作是“平臺無關的編程語言”&#xff1f; 3. 簡述什么是值傳遞和引用傳遞&#xff1f;重點 4. 詳細闡述Java進程和線程的區別 …

Java # JVM

一、1.8之前 運行時數據區&#xff08;進程共享&#xff09; 運行時常量池為什么要有方法區&#xff1a; jvm完成類裝載后&#xff0c;需要將class文件中的常量池轉入內存&#xff0c;保存在方法區中為什么是常量&#xff1a; 常量對象操作較多&#xff0c;為了避免頻繁創建和…

圖像去雨-雨線清除-圖像處理-(計算機作業附代碼)

背景 多年來&#xff0c;圖像去雨已經被廣泛研究&#xff0c;使用傳統方法和基于學習的方法。然而&#xff0c;傳統方法如高斯混合模型和字典學習方法耗時&#xff0c;并且無法很好地處理受到嚴重雨滴影響的圖像塊。 算法 通過考慮雨滴條狀特性和角度分布&#xff0c;這個問…

【Leetcode】98. 驗證二叉搜索樹

一、題目 1、題目描述 給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小于 當前節點的數。節點的右子樹只包含 大于 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。示例1: 輸入:root = …

馬上七夕到了,用各種編程語言實現10種浪漫表白方式

目錄 1. 直接表白&#xff1a;2. 七夕節表白&#xff1a;3. 猜心游戲&#xff1a;4. 浪漫詩句&#xff1a;5. 愛的方程式&#xff1a;6. 愛心Python&#xff1a;7. 心形圖案JavaScript 代碼&#xff1a;8. 心形并顯示表白信息HTML 頁面&#xff1a;9. Java七夕快樂&#xff1a;…