1100. Mars Numbers (20)

原创 2015年11月20日 16:23:02

1.十进制与13进制之间的转换

2.注意输入为13,26,39整数时,只输出一个marsNum,后面低位的0不输出


AC代码:

//#include<string>
//#include <iomanip>
#include<vector>
#include <algorithm>
//#include<stack>
#include<set>
#include<queue>
#include<map>
//#include<unordered_set>
#include<unordered_map>
//#include <sstream>
//#include "func.h"
//#include <list>
#include<stdio.h>
#include<iostream>
#include<string>
#include<memory.h>
#include<limits.h>
using namespace std;
bool isNum(string a)
{
	for (int i = 0; i < a.size(); i++)
	{
		if (a[i]>'9' || a[i] < '0')
			return false;
	}
	return true;
}
int main(void)
{
	vector<string> marsNum = { "tret","jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec" };
	vector<string> marsNum2 = { "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou" };
	map<string, int> mars2Num;
	map<string, int> mars2Num2;
	for (int i = 0; i < marsNum.size(); i++)
	{
		mars2Num[marsNum[i]] = i;
	}
	for (int i = 0; i < marsNum2.size(); i++)
	{
		mars2Num2[marsNum2[i]] = i+1;
	}
	string str = "";
	string n = "";
	getline(cin, n);
	int sum = 0;
	for (int i = 0; i < n.size(); i++)
	{
		sum = sum * 10 + n[i] - '0';
	}
	for (int k = 0; k < sum; k++)
	{
		getline(cin, str);
		if (isNum(str))
		{
			int num = 0;
			for (int i = 0; i < str.size(); i++)
			{
				num = num * 10 + str[i] - '0';
			}
			string ans = "";
			int  low = num % 13;//计算高位和地位
			int  high = num / 13;
			if (high == 0)
				ans = marsNum[low];
			else if (low == 0)//注意输入为13,26,39整数时,只输出一个marsNum,后面低位的0不输出
				ans = marsNum2[high - 1] ;
			else
				ans = marsNum2[high - 1] + " " + marsNum[low];
			cout << ans << endl;
		}
		else
		{
			int ans = 0;
			if (str.size() == 3)
			{
				if (mars2Num.find(str) != mars2Num.end())
				{
					ans = mars2Num[str];
				}
				else
				{//找不到,是在十位上
					ans = mars2Num2[str]*13;
				}
			}
			else
			{
				string high = str.substr(0, 3);
				string low = str.substr(4);
				ans = mars2Num2[high] * 13 + mars2Num[low];
			}
			cout << ans << endl;
		}
	}
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

1100. Mars Numbers (20)

1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B ...

PAT 1100. Mars Numbers (20)

1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B ...

1100. Mars Numbers (20)

题目链接:http://www.patest.cn/contests/pat-a-practise/1100 题目: People on Mars count their numbers ...

1100. Mars Numbers (20)[字符处理]

1. 原题:https://www.patest.cn/contests/pat-a-practise/1100 2. 思路: 题意:字符串处理。地球文和火星文的转换。 思路: 有多种方法。可...

PAT1100. Mars Numbers (20)

本题是PAT2015.9.12-level A的第一题。简单分析而言,此题是几个小问题的糅合:进制转换,字符串与数字转换。字符串处理。数据结构方面,因为题目中给定了输入数据范围在100以内,故偷懒直接...
  • agassy
  • agassy
  • 2015年09月13日 13:07
  • 622

pat-a1100. Mars Numbers (20)

寒假结束继续弄。。今天水题休息一下。刚开始字符串转整数那里没注意写错了。。 #include #include #include #include using namespace std; stri...

PAT-PAT (Advanced Level) Practise 1100 Mars Numbers (20)【二星级】

题目链接:http://www.patest.cn/contests/pat-a-practise/1100 题面: 1100. Mars Numbers (20) 时间限制 4...

PAT (Advanced Level) 1100. Mars Numbers (20) 解题报告

1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard ...

PAT (Advanced Level) Practise 1100 Mars Numbers (20)

1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B ...

PAT - 甲级 - 1100. Mars Numbers (20)(字符串处理)

题目描述: People on Mars count their numbers with base 13: Zero on Earth is called "tret" on Mars....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1100. Mars Numbers (20)
举报原因:
原因补充:

(最多只允许输入30个字)