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;
}

提交结果:
图片说明

c++
0

2个回答

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

0
 #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 {
        if ( n % 13 )
            cout << mars2[n / 13 - 1] << " " << mars1[n % 13];
        else
            cout << mars2[n / 13 - 1];
    }
}

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 + 1) * 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;
}

图片说明

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
终于刷完PAT乙级练习题
今天终于刷完了PAT乙级练习题,从6月14号开始,本来计划一天两道题,开始时进度缓慢,一道题要好久,后面慢慢速度就上来了,最后20道拿来模拟计时训练,四次模拟总算是有提高。 晒一下排名,哈哈 木可堂主就是我啦。 还有就是要感谢@luoluo,题目做不出来了总是参考他的。 后面开始继续刷甲级的题目,报了9月10号的秋季PAT甲级考试,希望能来得及好好练习,考个满意的成绩吧,加油!!!
PAT乙级(Basic Level)练习题 最难的问题
最难的问题 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、并提 供给你的将军。 消息加密的办法是:对消息原文中的每个字母,分别用该字
PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~
emmmmmmm 总算是考了个满分,不用以后再交PAT考场一日游入场费了T ^T 第一次在去年秋天,被第一题狼人杀给干掉了〒▽〒,最后得了81分,第二次就是今年春季,侥幸满分通过了= = 为了总结自己踩过的坑,给后面要考的同学们提供一些微薄的帮助,遂作此文。 考场经验 一. 注意,考试的运行时的黑框,是不能使用Crtl+V进行粘贴的,但这不代表考试不能进行复制粘贴,PAT考试系统里的代码...
PAT乙级题库1010(很水)
当a0=0时,f(x)=a0也是一个多项式,叫做零多项式 #include &amp;lt;iostream&amp;gt; using namespace std; int main() {     int A,n,flag=0;     while(cin&amp;gt;&amp;gt;A&amp;gt;&amp;gt;n){         if(flag==0&amp;amp;&amp;amp;n==0){             cout&amp;lt...
PAT乙级试题整理(一)——牛客网15分真题整理
牛客网上 共有真题六套,其中每套题有15分题一道,20分题目3道,25分题目1道,共计100分。考试时要求考生在180分钟内完成。我之前只学过Java和C#,没有学过C语言,粗浅学习了一下C语言基本语法,想借刷题这个机会好好体会一下面向过程的设计语言的精髓。这里计划: 1.先说题目思路,2.再贴上自己的垃圾代码,做一番自我批评,3.然后贴上我认为的经典代码,分析一番以便学习。通过这样的三个...
pat乙级考了55分。。。
一只大三的菜狗 加油吧
PAT乙级题解(C++)【目录】
题目地址:PAT 标号 标题 题解 备注 1001 害死人不偿命的(3n+1)猜想 查看题解 模拟 1002 写出这个数 查看题解 字符串处理 1003 我要通过! 查看题解 找规律 1004 成绩排行 查看题解 查找 1005 继续(3n+1)猜想 查看题解 桶排标记 ...
<心情随笔>2017.3.4 第一次PAT甲级惨烈结果_小结
说不伤心是假的,真的挺伤心的。 毕竟准备了一整个寒假,算法笔记也都逼着自己看了一遍。 不知道那些大佬们是什么感觉,反正除了那道微博转发抽奖的20分的题目我看懂了之外,后面三道可以说当时脑子就是一片空白。。。第二道连蒙带猜居然过了一个测试点。。。 所以说,不能因为自己考的特别渣就说报这场考试不值,没有值不值的其实,只有自己配不配的问题。。。 自己到底有多少模拟题目是在规定的时间内写完的?答案
PAT乙级考试经验分享
对于刚过去2016年冬季PAT乙级考试给大家分享下一下经验: 1 报名就不用多说了,准备好官网上该准备的材料,选择离学校最近的考点最好。特别是自我介绍那一块尤其重要,毕竟那是关乎就业,个人建议写满1000字,对于代码是否让相关企业看到的选项,个人觉得全选最好,毕竟多一份机会。 2 对于刷题,报名成功后必须保证刷适量的习题,尽量保证能够在考试前熟悉所有的知识点。我已经把PAT乙级考试截止...
PAT顶级
编号 题目 考点 1017 The Best Peak Shape 动态规划 1018 Subnumbers 找规律  
关于PAT(乙级)
写这篇文章的时候,我已经刷了10多到PAT(乙级)了,遇到的坑也不少,现在来谈谈吧。PAT乙级的题目本质上很基础,但是有时候还是会花费大量的时间,才能解决。这个我相信刷过的同学一定深有体会。 仔细想想,为什么我们会在这些题目上花费较多的时间呢?我觉得不是自己的程序设计能力的锅。也不是题目太难了,我们的智力水准不够。而是感觉PAT总在和我们玩文字游戏,这个文字游戏有时候玩的很厉害,弄得你是看似理解
PAT顶级(top level)题目解答
此篇blog用于记录我的PAT(顶级)的题目的代码及思路,长期更新中。 1001 Battle Over Cities - Hard Version 题目理解: 给出当前的城市数目N,和m个城市的连接,其中m个城市的连接的状态有的是1,代表正常,有的是0,代表连接损坏。当一个城市被占领时,与这个城市的连接全部切断,此时需要保证剩余的城市都存在至少一个和其他城市的连接为1。这时就需要修复(re...
1124. Raffle for Weibo Followers (20)-PAT甲级真题
John got a full mark on PAT. He was so happy that he decided to hold a raffle(抽奖) for his followers on Weibo -- that is, he would select winners from every N followers who forwarded his post, and give
刷 PAT 的心路历程
2018.04.17 甲级 20 分题目刷完第一遍。总体感觉比乙级 25 分要简单。即使是相同或类似的题,数据好像都要弱一点。 2018.04.16:乙级题目刷完第二遍。 排序题做的很别扭,花了很多时间,主要是这几个排序: 归并排序 插入排序 选择排序 快速排序 开始刷甲级题目,甲级题目一共 147 道: 38 道 20 分题 76 道 25 分题 33 道 30 分题 ...
PAT乙级题目对应知识点分类梳理
PAT乙级的90道题的知识点与对应的题号整理如下,便于做专项练习和巩固! 1、字符串函数 考察字符串相关知识,如逆转、字母与数字的判断与转化、字符串拼接、字符串比较 题号:1002、1006、1009、1014、1021、1024、1031/1039、1042、1043、/1048/1052/1054/1058/1067/1079、1081/1084/1086、 2、STL容器 考察ST...
2018年12月份冬季PAT甲级考试总结
终于从威海回到学校了,可以平复一下想打死自己的心情写一下总结了。 本来打算这个学期把PAT甲级的练习题都刷完,奈何到了学期末专业课复习太困难,并且还有六级考试,实训,一大堆作业,导致了刷题的滞后,最后回看了下博客,才做了二十几道,就很慌的踏入考场。 四道题,20,25,25,30,满分100,成绩93。 很菜,不是最后一道题不会,而是第二道模拟题因为马虎,最后肉眼debug的时候,发现有个变...
2018.12.09PAT乙级考试总结
今天下午参加了PAT乙级的考试,不理想,最后一题没做出来~~~ 回顾一下做题的情况: 前面四道题很快就做出来,做完之后特地看了一下时间,只花了将近一个半小时的时间。 而这四道题中尤其以第一题花的时间比较多,大概有将近30分钟。而且还有一个测试点没过,扣了2分。第一道题是因为刚开始上手做,还没有进入状态,所以调试的时候花了点时间,而且由于DevC++的DOS界面不能粘贴,以前用的可以粘贴,也忘...
pat甲级准备
之前一直都没想好到底要不要考研,特别是最近看了一些学校的招生简章,更慌了。感觉考不上吧。没点自信。毕竟本科是双非,自己之前学习也不好。但不搏一把,也不甘心吧。考研的那几个科目里面,数学是很重要的,我的想法就是寒假到四月份先复习一遍数学,看看自己的程度,感觉可以往120+冲,就报个好点学校试试。一方面我也想考个pat甲级80+,据说这个考得好的话是可以直接去面试的,如果考研失利,就只能工作,这个还是
PAT乙级
1001 害死人不偿命的(3n+1)猜想 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至...
PAT乙级做题总结
最近准备PAT乙级考试,但是准备过程中通过刷题暴露了这样几个问题: 1、掌握的库函数太少。这导致很多有现成的库函数,我还采用自己编写的方式。执行效率低下,且容易出现问题。这也是最明显的问题; 2、编程的思维还没有形成。具体而言,当面临一个编程题时,不是编程知识为我所用,不能随心所欲地按照自己如何思考的去编写代码,而是还需要考虑自己会不会,使用的数据结构类型是否掌握的比较熟练。这正是编程实战经验...
PAT 1069微博转发抽奖的代码实现及错误分析(C语言)
题目 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包。请你编写程序帮助他确定中奖名单。 输入格式: 输入第一行给出三个正整数 M(≤ 1000)、N 和 S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从 1 开始)。随后 M 行,顺序给出转发微博的网友的昵称(不超过 20 个字符、不包含空格回车的非空字符串)...
PAT乙级(Basic)题库---1012
题目 1012-数字分类 解题思路 开始根据switch结构给五类正整数分类,使用不同的变量记录根据不同分类下执行的响应结果,其中A4需要求精确到小数点后1位的平均数,因此使用double类型来初始化。由于其中两类的操作需要记录该类正整数的个数,我们可以使用额外的变量辅助记录。在这里我使用了a2num记录A2类型数个数,判断进行加法还是减法操作,同时用来判断是否存在A2类型数。使用a2num...
PAT乙级——1003
题目: 我要通过!(20 分) “答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。 得到“答案正确”的条件是: 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符; 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A...
PAT乙级1054. 求平均值(C语言)
PAT乙级真题题解目录 /* * 1. 合法的输入最长为8(-1000.00); * 2. 严谨解法: * 2.1 scanf(&amp;quot;%8s&amp;quot;, str); 读取 最多前8个字符 * 2.2 利用 ungetc(getchar(), stdin); 读取之后的字符,并推回(避免不必要的误读); * 2.3 isspace(c); 判断是否读取了...
PAT乙级试题整理(二)——牛客网20分真题整理
牛客网上 共有真题六套,其中每套题有15分题一道,20分题目3道,25分题目1道,共计100分。考试时要求考生在180分钟内完成,依照陈越姥姥的说法,要在30分钟内拿下乙级20分题目,所以我们这篇主要想办法怎么尽量缩短自己的做题时间。我之前只学过Java和C#,没有学过C语言,粗浅学习了一下C语言基本语法,想借刷题这个机会好好体会一下面向过程的设计语言的精髓,因此在第一部分用了C语言做,做完...
2019.3 PAT 甲级心得
考完了PAT总结几点: 一定要刷官网题,刷的越多分越高。 每年的题型都比较相似 甲级真的很爱考图论(树),但只是类似于图的遍历的很简单的图论,对于这一块要养成一个固定的存图形式。比如需要遍历边的题我用 vector&amp;amp;amp;amp;amp;amp;lt;pair, pair&amp;amp;amp;amp;amp;amp;gt;E存边,不带权图临接表用vector&amp;amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;amp;gt;E[
pat乙级题解目录
pat乙级题解目录 注:由于本人已转向使用markdown语法创作博客,以后的题解更新将在另一篇用markdown语法创作的博客pat乙级题解目录​​​​​​​中进行,本题解目录不再进行更新,请读者多多包涵,谢谢! 编号 标题 题解 分类 1001  害死人不偿命的(3n+1)猜...
PAT 我要通过
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;3. 如果 aPb...
2019年3月PAT甲级认证经验教训总结~~~路还很长,慢慢来
今天的PAT认证是我人生中的第二次算法考试,第一次是六年前大一学习 C 语言时学校举行的算法比赛。跟第一次一样,这次考得也非常失败,只做出来前两道题。 去年七月份辞职跨专业考研,选了自己感兴趣的计算机,认认真真复习了半年,初试成绩还行,应该能进复试。初试结束后,我就开始在 OJ 上面做题,为机试做准备。为了能让自己简历好看些,我报考了 PAT、CCF认证。这次 PAT 认证我的目标是满分,然而。...
PAT Basic1054(unsolved:两个测试点没过,其实只有一步之遥)
1054 求平均值 (20)(20 分)本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数N(&amp;lt;=100)。随后一行给出N个实数,数字间以一个空格分隔。输出格式:对每个非法输入,在一行中...
PAT乙级练习教训
1004. 再筛选最大最小的时候,要在最开始设置好绝对最大(最小)的值,以防初始化会造成难以预料的结果。 1008.数组整体右移问题 我在开始本来打算用哈希表的思想,直接定出每个元素的最终位置。但是这个方法的可行性我考虑的非常不严谨,一个循环内,将它的下一个位置作为下一次的数,最终有可能会循环到它本身不能遍历所有元素。后来我决定每次只移动一位,一共移动M次。这样它的关键难度就仅在于需要两个中间变...
PAT乙级(Basic)题库---1016
题目 1016-部分A+B 解题思路 因为要判断输入数中某个数字的个数,因此用字符串读入处理较为简单。然后根据循环遍历得到的数字的个数来构建新的数并以此进行计算得到结果即可。 代码 #include&amp;lt;iostream&amp;gt; #include&amp;lt;sstream&amp;gt; #include&amp;lt;algorithm&amp;gt; #include&amp;lt;string&amp;gt; #include&amp;lt...
PAT乙级题目索引(题目+解析+AC代码)
题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 PAT 乙级 1005继续(3n+1)猜想 25 PAT 乙级 1006 换个格式输出整数 15 PAT 乙级 1007 素数...
(PAT乙级)1028 人口普查(C语言实现)
总结: 1、在写代码前,要定义好数据结构。用字符数组来储存名字,用三个整型数来存储年月日。这里用了一个巧思:为了避免出现年月日各种逻辑判断混杂,可以将年月日化成一个8位整数,即可以直接比较大小。 2、输出有一个坑,当没有有效生日时候,输出为0,这时候是不用输出年老人、年轻人的名字的。 3、运行时有几个测试点过不去,但改了字符数组的列数后便成功了。我觉得还是关于printf输出字符串造...
PAT乙级 Java(1-95题)
PAT题目集:https://pintia.cn/problem-sets 作者:AchillesL 若转载文章,请在明显的位置标明文章出处 1. 前言 最近刷了一遍PAT的乙级试题,全部题目都已经AC(截止到2019/01/23),大部分题目使用Java提交,部分题目用C++提交(主要原因是使用Java会超时)。后序有时间会补上全部题目的C++实现。...
PAT乙级1016. 部分A+B(C语言)
PAT乙级真题题解目录 /* 0 &amp;lt; A, B &amp;lt; 10^{​10},故用int long创建数字 */ #include &amp;lt;stdio.h&amp;gt; int main() { long int num[2], P[2] = {0}; int D[2]; scanf(&quot;%ld %d %ld %d&quot;, &amp;amp;num[0], &amp;amp;...
PAT乙级1039. 到底买不买(C语言)
PAT乙级真题题解目录 /* 也可采用 将字符作为数组下标的方式统计数量 */ #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;string.h&amp;gt; int main() { char line1[1001], line2[1001]; scanf(&quot;%s\n%s&quot;, line1, line2); for (int i =...
PAT考试乙级1011(C语言实现)
#include<stdio.h> int main(){ int num,i; long long a[11]={0},b[11]={0},c[11]={0}; scanf("%d",&num); if(num<10){ for(i=0;i<num;i++){ scanf("%ld %ld %ld",&a[i],&b[i],&
PAT乙级1002. 写出这个数 C++
本人没有什么特殊的简单的解题技巧,为了安全,此次用了C++的字符串,从n 小于10的100次方可以看出n肯定不是long之类的,应该是字符串。主要就是对int和string之间的转换,以及输出了。我的代码如下,个人感觉应该不是最优的,但是基本能讲清:#include <iostream> #include <string> using namespace std; void static read
PAT甲级一个月攻略
看看“别人家的代码”:一. 树1)求二叉树的高度(Maximum Depth of Binary Tree)// LeetCode, Maximum Depth of Binary Tree // 时间复杂度O(n),空间复杂度O(logn) class Solution { public: int maxDepth(TreeNode *root) { if (root == nullp