1044 火星数字 (20 分)(c++)
生活随笔
收集整理的這篇文章主要介紹了
1044 火星数字 (20 分)(c++)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
火星人是以 13 進(jìn)制計(jì)數(shù)的:
- 地球人的 0 被火星人稱為 tret。
- 地球人數(shù)字 1 到 12 的火星文分別為:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
- 火星人將進(jìn)位以后的 12 個(gè)高位數(shù)字分別稱為:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的數(shù)字?29?翻譯成火星文就是?hel mar;而火星文?elo nov?對(duì)應(yīng)地球數(shù)字?115。為了方便交流,請(qǐng)你編寫程序?qū)崿F(xiàn)地球和火星數(shù)字之間的互譯。
輸入格式:
輸入第一行給出一個(gè)正整數(shù)?N(<100),隨后?N?行,每行給出一個(gè) [0, 169) 區(qū)間內(nèi)的數(shù)字 —— 或者是地球文,或者是火星文。
輸出格式:
對(duì)應(yīng)輸入的每一行,在一行中輸出翻譯后的另一種語(yǔ)言的數(shù)字。
輸入樣例:
4 29 5 elo nov tam結(jié)尾無(wú)空行
輸出樣例:
hel mar may 115 13結(jié)尾無(wú)空行
#include<iostream> #include<string> using namespace std; string di[13] = { "tret","jan","feb","mar","apr","may","jun","jly","aug","sep","oct","nov","dec" }; string gao[13] = { "##","tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mer","jou" }; void fun1(int a); void fun2(string a); int main() {int N;string temp;cin >> N;getchar();for (int cnt = 0; cnt < N; cnt++) {getline(cin, temp);if (temp[0] >= '0' && temp[0] <= '9') fun1(stoi(temp));else fun2(temp);cout << endl;}return 0; } void fun1(int a) {if (a / 13 != 0) cout << gao[a / 13]<<" ";cout << di[a % 13]; } void fun2(string a) {string s1 = a.substr(0, 3),s2;if (a.length()>4) s2 = a.substr(4, 3);int i = 0, j = 0;for (int cnt = 0; cnt < 13; cnt++) {if (s1 == di[cnt] || s2 == di[cnt]) i = cnt;if (s1 == gao[cnt]) j = cnt;}cout << i + j * 13; }踩過的坑:因?yàn)檫@道題有一個(gè)特點(diǎn)就是,高位和低位沒有一樣的字符串來(lái)進(jìn)行表示,所以,不必像正常的十進(jìn)制數(shù)一樣,用0表示13的整數(shù)這種情況.我們用0占位,實(shí)際上是因?yàn)椴挥?占位,單純的1就是1,而這里的高位天然表示n*13
總結(jié)
以上是生活随笔為你收集整理的1044 火星数字 (20 分)(c++)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1042 字符统计 (20 分)(c语言
- 下一篇: creator找不到编译器 qt_VS2