PAT(stl)——1100 Mars Numbers (20 分)

People on Mars count their numbers with base 13:

Zero on Earth is called “tret” on Mars.
The numbers 1 to 12 on Earch is called “jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec” on Mars, respectively.
For the next higher digit, Mars people name the 12 numbers as “tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou”, respectively.
For examples, the number 29 on Earth is called “hel mar” on Mars; and “elo nov” on Mars corresponds to 115 on Earth. In order to help communication between people from these two planets, you are supposed to write a program for mutual translation between Earth and Mars number systems.

Input Specification:
Each input file contains one test case. For each case, the first line contains a positive integer N (<100). Then N lines follow, each contains a number in [0, 169), given either in the form of an Earth number, or that of Mars.

Output Specification:
For each number, print in a line the corresponding number in the other language.

Sample Input:
4
29
5
elo nov
tam
Sample Output:
hel mar
may
115
13

题目大意:

一道20分的模拟水题,花了1个小时才通过。具体看代码。

题目解析:

具体代码:

#include<iostream>
#include<algorithm>
#include<map>
#include<cmath>
using namespace std;
string x[13]={"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string y[13]={"undefined","tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
map<string,int> m;
void init(){
	for(int i=0;i<13;i++){
		m[x[i]]=i;
		m[y[i]]=i*13;
	}
}
int main()
{
    int n;
    cin>>n;
    init();
    getchar();
    while(n--){
    	string s;
    	getline(cin,s);
    	if(isdigit(s[0])){//处理数字 
			int num=stoi(s);
			int arr[3],k=0;
			do{
				arr[k++]=num%13;
			}while(num/=13);
			if(k>1){//有十位
				cout<<y[arr[1]];
				if(arr[0]!=0)
					cout<<" "<<x[arr[0]];
				cout<<endl;
			}else{
				cout<<x[arr[0]]<<endl;
			}
		}else{
			string tmp;
			int num=0;
			for(int i=0;i<s.size();i++){
				if(s[i]==' '){
					num+=m[tmp];
					tmp.clear();
				}else
					tmp+=s[i];
			}
			num+=m[tmp];
			cout<<num<<endl;
		}
	}
    return 0;
}
全部评论

相关推荐

Ryan188:我觉得你简历最核心的问题就是太大众化。 你要有一个认知就是,如果你是面试官,你是HR,其实他们每天都会收到非常多大量重复的像你这种简历。 就是说你的项目不是一个真实的上线的项目,可能是从网上学习而来的,或者是直接copy别人的项目,没有新意,没有展现出你自己对技术的思考,而且你的学历也不占优,自然而然就很难有人去选择你。 所以要做的实际上是差异化方向的工作,也就是“给我一个选择你的理由”,比如最近很火的ai,你可以写一个ai相关项目比如问答应用或者mcp编写或者agent搭建,需要你先花点时间学习,34天吧,展现你对这方面相较于其他人特有的思考; 或者写相关技术博客输出一些技术内容,有具体可以量化的成果等等去增加你的竞争力。 但以上这些都是后话,我去年在你这个时候也是没人理我,咱们双非学历也没实习,难找也正常,我当时整个3月份都没人鸟我,直到有个新招的岗位,很缺人很急,流程很快,所以我一下子进去了,所以运气方面也很重要,需要你一直坚持喝复盘,直到看到光明,加油兄弟
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务