小明一点也不酷 2017-12-06 14:44 采纳率: 0%
浏览 1097

PAT乙级一道很简答的题目,一直那不到满分,求大神指点迷津。。。

题目
我的代码:

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

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

void toMars ( string s )
{
    int n;
    stringstream ss(s);
    ss >> n;
    if ( n <= 12 )  cout << mars1[n];
    else {
        cout << mars2[n / 13 - 1] << " " << mars1[n % 13];
    }
}

void toEarth ( string s )
{
    if ( s.length() <= 3 ) {
        int flag = 1;
        for ( int i = 0; i <= 13; i++ )
            if ( mars1[i] == s ) {
                cout << i;
                flag = 0;
                break;
            }
        if ( flag )
            for ( int i = 0; i <= 11; i++ )
                if ( mars2[i] == s ) {
                    cout << i + 13;
                    break;
                }
    }
    else {
        string a, b;
        int sum = 0;
        for ( int i = 0; i < 3; i++ )   a += s[i];
        for ( int i = 4; i <= 6; i++ )  b += s[i];
        for ( int i = 0; i <= 11; i++ )
            if ( mars2[i] == a ) {
                sum += 13 * (i + 1);
                break;
            }
        for ( int i = 0; i <= 13; i++ )
            if ( mars1[i] == b ) {
                sum += i;
                break;
            }
        cout << sum;
    }
}

int main()
{
//  freopen("F://input.txt","r",stdin);
    int N;
    cin >> N;
    getchar();
    for ( int i = 0; i < N; i++ ) {
        string s;
        char ch;
        while ( ch = getchar() ) {
            if ( ch == '\n' )   break;
            else    s += ch;
        }
        if ( s[0] >= '0' && s[0] <= '9' )   toMars(s);
        else    toEarth(s);
        cout << endl;
    }
    return 0;
}

提交结果:
图片说明

  • 写回答

2条回答 默认 最新

  • 小明一点也不酷 2017-12-06 14:57
    关注

    知道了= =,有两个地方错了,一个是13是个特殊值,需要加上一个判断。第二个就是当火星文处于第二个Mars数组中时,应该是(i + 1) * 13;而不是原来的
    i + 13.。。
    自己还是太菜了

    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器