PAT 1044.火星数字

思路:使用getline(cin ,some)读取整行文本

1.判断是不是数字

将字符串的数字转换为数字sum

如果sum<13 不需要进制转换,直接输出对应的个位字符串

如果大于13

如果sum是13的倍数 则只用输出高位的,个位的0不用输出

否则 打印第一位 再打印第二位


2.是字符串时

4位一循环

先判断个位上有没有对应的 把对应数字加上去

再判断高位上有没有对应的  把sum +=(对应数字+1)*13

#include<iostream>
#include<string>
using namespace std;

string gewei[13] ={"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string gaowei[13] = {"tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"}; 

int main()
{
	int n;
	cin >> n;
	int len;
	string mess; 
	getchar();
	while(n--)
	{
		int sum=0;
		getline(cin,mess);
		
		if(mess[0]>='0'&&mess[0]<='9')//数字 
		{
			for(int j=0;j<mess.size();j++)
			{
				sum = sum*10 + (mess[j]-'0');	
			}
			
		
			//cout << sum;
			if(sum<13)
				cout << gewei[sum] << endl;
			
			else
			{
				if(sum%13==0)
				{
					cout << gaowei[sum/13-1] << endl;
				}
				else
				{
					cout << gaowei[sum/13-1] << " " << gewei[sum%13] << endl;
				}
			}
		}
		
		else
		{
			
			for(int k=0;k<mess.size();k=k+4)
			{
				string three = "";//初始化
				three = three+mess[k]+mess[k+1]+mess[k+2];
				for(int l=0;l<13;l++)
				{
					if(three==gewei[l])
					{
						sum += l;
					}
					if(three==gaowei[l])
					{
						sum += sum + (l+1)*13;
					}	
				}	
			}
			cout << sum << endl;
		}	
	} 
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值