進(jìn)制轉(zhuǎn)換
題目背景
無(wú)
題目描述
今天小明學(xué)會(huì)了進(jìn)制轉(zhuǎn)換,比如(10101)2 ,那么它的十進(jìn)制表示的式子就是 :
1*24+0*23+1*22+0*21+1*2^0,
那么請(qǐng)你編程實(shí)現(xiàn),將一個(gè)M進(jìn)制的數(shù)N轉(zhuǎn)換成十進(jìn)制表示的式子。
注意:當(dāng)系數(shù)為0時(shí),該單項(xiàng)式要省略。
輸入格式
兩個(gè)數(shù),M和N,中間用空格隔開(kāi)。
輸出格式
共一行,一個(gè)十進(jìn)制表示的式子。
樣例 #1
樣例輸入 #1
2 10101
樣例輸出 #1
1*2^4+1*2^2+1*2^0
提示
對(duì)于100%的數(shù)據(jù),1<M<10,N的位數(shù)不超過(guò)1000。
思路
首先,從輸入中讀取一個(gè)整數(shù)m和一個(gè)字符串s。
代碼中的變量i被初始化為字符串s的長(zhǎng)度減1,這是因?yàn)樵诙囗?xiàng)式中,最高位的指數(shù)是長(zhǎng)度減1。接著,它設(shè)置一個(gè)標(biāo)志變量flg,用于判斷是否是第一個(gè)非零的字符,以決定是否需要輸出一個(gè)加號(hào)。
然后,程序開(kāi)始遍歷字符串s中的每個(gè)字符。對(duì)于每個(gè)字符,如果它不是’0’,那么就輸出這個(gè)字符和它的指數(shù)。這個(gè)指數(shù)是字符在字符串中的位置,從右到左,從0開(kāi)始。如果這不是第一個(gè)非零的字符,那么在輸出字符和它的指數(shù)之前,還會(huì)輸出一個(gè)加號(hào)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-808461.html
輸出的格式是printf("%c*%d^%d", *it, m, i);
,其中%c
是字符,*
是乘號(hào),%d
是整數(shù),^
是指數(shù)符號(hào)。在每次遍歷后,i都會(huì)減1,因?yàn)槲覀兪菑淖址哪┪蚕蚯氨闅v。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-808461.html
AC代碼
#include <iostream>
#define AUTHOR "HEX9CF"
using namespace std;
int main() {
int m;
string s;
cin >> m >> s;
int i = s.size() - 1;
bool flg = 0;
for (auto it = s.begin(); it != s.end(); it++) {
if (*it != '0') {
if (!flg) {
flg = 1;
} else {
putchar('+');
}
printf("%c*%d^%d", *it, m, i);
}
i--;
}
return 0;
}
到了這里,關(guān)于【洛谷 P2084】進(jìn)制轉(zhuǎn)換 題解(模擬+字符串)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!