第八屆藍橋杯C C B組個人決賽36進製

2021-09-13 18:55:37 字數 2793 閱讀 3621

36進製

對於16進製制,我們使用字母a-f來表示10及以上的數字。

如法炮製,一直用到字母z,就可以表示36進製。

36進製中,a表示10,z表示35,aa表示370

你能算出 many 表示的數字用10進製表示是多少嗎?

請提交乙個整數,不要填寫任何多餘的內容(比如,說明文字)

思路:a表示10,z表示35,我們需要將英文本母和數字對應起來,顯然我們需要用到map來儲存鍵值對

將任意進製數轉換成十進位制,是同乙個方法,公式如下:number(10進製)=原數第一位*原數進製的0次方+原數第二位*原數進製的1次方+原數第三位*原數進製的2次方+...+原數第n位*原數進製的n-1次方

具體思路如下:

1.申明乙個map,用英文本母索引數字,將「鍵值對1」-1,...,「9」-9,「a」-10,..."z"-35存入map中

宣告乙個字串,用來儲存需要轉換的36進製數

宣告乙個int型變數sum,初始化為0,,用來累加,

宣告乙個int 型變數length,用來儲存36進製數字的長度

2.用string的strsub方法擷取s的倒數第乙個字母,用map通過字母找到該字母對應的數字,sum=sum+map[string.strsub(length-1,1)]*pow(36,length-1);

3.用string的strsub方法擷取s的倒數第二個字母,用map通過字母找到該字母對應的數字,sum=sum+map[string.strsub(length-2,1)]*pow(36,length-2);

.................此處省略n-3步...............

n.用string的strsub方法擷取s的第乙個字母,用map通過字母找到該字母對應的數字,sum=sum+map[string.strsub(0,1)]*pow(36,0);

最後輸出結果即可

#include#include#includeusing namespace std;

int main() {

mapmapnumber;

mapnumber.insert(pair("1",1));

mapnumber.insert(pair("2",2));

mapnumber.insert(pair("3",3));

mapnumber.insert(pair("4",4));

mapnumber.insert(pair("5",5));

mapnumber.insert(pair("6",6));

mapnumber.insert(pair("7",7));

mapnumber.insert(pair("8",8));

mapnumber.insert(pair("9",9));

mapnumber.insert(pair("a",10));

mapnumber.insert(pair("b",11));

mapnumber.insert(pair("c",12));

mapnumber.insert(pair("d",13));

mapnumber.insert(pair("e",14));

mapnumber.insert(pair("f",15));

mapnumber.insert(pair("j",16));

mapnumber.insert(pair("h",17));

mapnumber.insert(pair("i",18));

mapnumber.insert(pair("g",19));

mapnumber.insert(pair("k",20));

mapnumber.insert(pair("l",21));

mapnumber.insert(pair("m",22));

mapnumber.insert(pair("n",23));

mapnumber.insert(pair("o",24));

mapnumber.insert(pair("p",25));

mapnumber.insert(pair("q",26));

mapnumber.insert(pair("r",27));

mapnumber.insert(pair("s",28));

mapnumber.insert(pair("t",29));

mapnumber.insert(pair("u",30));

mapnumber.insert(pair("v",31));

mapnumber.insert(pair("w",32));

mapnumber.insert(pair("x",33));

mapnumber.insert(pair("y",34));

mapnumber.insert(pair("z",35));

string s;

s="many";

int length=s.size();

int sum=0;

for(int i=0; i感謝小哥哥,小姐姐看到了這裡,thanks♪(・ω・)ノ

藍橋杯第八屆決賽

精神狀態不好的時候怎麼寫 真的哭了,一堆sb錯誤 對於16進製制,我們使用字母a f來表示10及以上的數字。如法炮製,一直用到字母z,就可以表示36進製。36進製中,a表示10,z表示35,aa表示370 你能算出 many 表示的數字用10進製表示是多少嗎?請提交乙個整數,不要填寫任何多餘的內容 ...

第八屆藍橋杯決賽總結

最後只得了個國三安慰獎,心裡遺憾也不遺憾。省賽結束後就一直沒認真刷過題,國三也是意料之中吧。比賽題目也是中規中矩,只是自己沒好好準備。第一題很簡單的簽到題。第二題其實之前做過很多態別題,dfs,然而由於自己太久沒做題,沒手感沒題感,寫了近乙個小時,還是沒能出結果。第三題 補全題,類似生成樹,前幾屆決...

等差素數列 第八屆藍橋杯c c B組

等差素數列 2,3,5,7,11,13,是素數序列。類似 7,37,67,97,127,157 這樣完全由素數組成的等差數列,叫等差素數數列。上邊的數列公差為30,長度為6。2004年,格林與華人陶哲軒合作證明了 存在任意長度的素數等差數列。這是數論領域一項驚人的成果!有這一理論為基礎,請你借助手中...