其他分享
首页 > 其他分享> > 1100 Mars Numbers -Pat甲级

1100 Mars Numbers -Pat甲级

作者:互联网

People on Mars count their numbers with base 13:

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

用map将数字和火星语一一对应,注意需要输出火星语“tret”的情况当且仅当输入的数字是0的情乱,其余情况不输出

满分代码如下:

#include<bits/stdc++.h>
using namespace std;
map<int,string>lw={{1,"jan"},{2,"feb"},{3,"mar"},
				   {4,"apr"},{5,"may"},{6,"jun"},
				   {7,"jly"},{8,"aug"},{9,"sep"},
				   {10,"oct"},{11,"nov"},{12,"dec"}};
map<int,string>hg={{1,"tam"},{2,"hel"},{3,"maa"},
				   {4,"huh"},{5,"tou"},{6,"kes"},
				   {7,"hei"},{8,"elo"},{9,"syy"},
				   {10,"lok"},{11,"mer"},{12,"jou"}};
map<string,int>silw={{"jan",1},{"feb",2},{"mar",3},
				   {"apr",4},{"may",5},{"jun",6},
				   {"jly",7},{"aug",8},{"sep",9},
				   {"oct",10},{"nov",11},{"dec",12}};
map<string,int>sihg={{"tam",1},{"hel",2},{"maa",3},
				   {"huh",4},{"tou",5},{"kes",6},
				   {"hei",7},{"elo",8},{"syy",9},
				   {"lok",10},{"mer",11},{"jou",12}};
int n;
int main(){
	cin>>n;
	getchar();
	string s;
	for(int i=1;i<=n;i++){
		getline(cin,s);
		if(isdigit(s[0])){
			int num=stoi(s);
			if(num==0){
				cout<<"tret"<<endl;
				continue;
			}
			int hh=num/13;
			int flag=0;
			if(hh!=0){
				cout<<hg[hh];
				flag=1;
			}
			int ll=num%13;
			if(ll!=0){
				if(flag) cout<<" ";
				cout<<lw[ll];
			}
		}else{
			stringstream ss;
			string res;
			ss<<s;
			int sum=0;
			while(ss>>res){
				if(silw.find(res)!=silw.end()){
					sum+=silw[res];
				}else if(sihg.find(res)!=sihg.end()){
					sum+=(sihg[res]*13);
				}	
			}
			cout<<sum;
		}
		cout<<"\n";
	}
	return 0;
}			

 

标签:12,Pat,elo,res,Numbers,1100,Mars,hel,nov
来源: https://blog.csdn.net/amf12345/article/details/99111451