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

0

2个回答

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

PAT乙级(Basic Level)练习题 最难的问题

PAT考试经验总结（甲乙级均适用）~~想满分的请看这里！~~
emmmmmmm 总算是考了个满分，不用以后再交PAT考场一日游入场费了T ^T 第一次在去年秋天，被第一题狼人杀给干掉了〒▽〒，最后得了81分，第二次就是今年春季，侥幸满分通过了= = 为了总结自己踩过的坑，给后面要考的同学们提供一些微薄的帮助，遂作此文。 考场经验 一. 注意，考试的运行时的黑框，是不能使用Crtl+V进行粘贴的，但这不代表考试不能进行复制粘贴，PAT考试系统里的代码...
PAT乙级题库1010(很水)

PAT乙级试题整理（一）——牛客网15分真题整理

pat乙级考了55分。。。

PAT乙级题解(C++)【目录】

<心情随笔>2017.3.4 第一次PAT甲级惨烈结果_小结

PAT乙级考试经验分享

PAT顶级

PAT顶级(top level)题目解答

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

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甲级考试总结

2018.12.09PAT乙级考试总结

pat甲级准备

PAT乙级
1001 害死人不偿命的(3n+1)猜想 卡拉兹(Callatz)猜想： 对任何一个正整数 n，如果它是偶数，那么把它砍掉一半；如果它是奇数，那么把 (3n+1) 砍掉一半。这样一直反复砍下去，最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想，传说当时耶鲁大学师生齐动员，拼命想证明这个貌似很傻很天真的命题，结果闹得学生们无心学业，一心只证 (3n+1)，以至...
PAT乙级做题总结

PAT 1069微博转发抽奖的代码实现及错误分析（C语言）

PAT乙级（Basic）题库---1012

PAT乙级——1003

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分真题整理

2019.3 PAT 甲级心得

pat乙级题解目录
pat乙级题解目录 注：由于本人已转向使用markdown语法创作博客，以后的题解更新将在另一篇用markdown语法创作的博客pat乙级题解目录​​​​​​​中进行，本题解目录不再进行更新，请读者多多包涵，谢谢！ 编号 标题 题解 分类 1001  害死人不偿命的(3n+1)猜...
PAT 我要通过
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件，系统就输出“答案正确”，否则输出“答案错误”。得到“答案正确”的条件是：1. 字符串中必须仅有P, A, T这三种字符，不可以包含其它字符；2. 任意形如 xPATx 的字符串都可以获得“答案正确”，其中 x 或者是空字符串，或者是仅由字母 A 组成的字符串；3. 如果 aPb...
2019年3月PAT甲级认证经验教训总结~~~路还很长，慢慢来

PAT Basic1054(unsolved:两个测试点没过，其实只有一步之遥)
1054 求平均值 (20)（20 分）本题的基本要求非常简单：给定N个实数，计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000，1000]区间内的实数，并且最多精确到小数点后2位。当你计算平均值的时候，不能把那些非法的数据算在内。输入格式：输入第一行给出正整数N（&amp;lt;=100）。随后一行给出N个实数，数字间以一个空格分隔。输出格式：对每个非法输入，在一行中...
PAT乙级练习教训
1004. 再筛选最大最小的时候，要在最开始设置好绝对最大（最小）的值，以防初始化会造成难以预料的结果。 1008.数组整体右移问题 我在开始本来打算用哈希表的思想，直接定出每个元素的最终位置。但是这个方法的可行性我考虑的非常不严谨，一个循环内，将它的下一个位置作为下一次的数，最终有可能会循环到它本身不能遍历所有元素。后来我决定每次只移动一位，一共移动M次。这样它的关键难度就仅在于需要两个中间变...
PAT乙级（Basic）题库---1016

PAT乙级题目索引(题目+解析+AC代码)

（PAT乙级）1028 人口普查（C语言实现）

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++

PAT甲级一个月攻略