PTA乙级1044C++(手动打表hhh)
1044 火星数字 (20 分)
火星人是以 13 进制计数的:
- 地球人的 0 被火星人称为 tret。
- 地球人数字 1 到 12 的火星文分别为:jan, feb, mar, apr, may, jun, jly, aug, sep, oct, nov, dec。
- 火星人将进位以后的 12 个高位数字分别称为:tam, hel, maa, huh, tou, kes, hei, elo, syy, lok, mer, jou。
例如地球人的数字 29 翻译成火星文就是 hel mar;而火星文 elo nov 对应地球数字 115。为了方便交流,请你编写程序实现地球和火星数字之间的互译。
输入格式:
输入第一行给出一个正整数 N(<100),随后 N 行,每行给出一个 [0, 169) 区间内的数字 —— 或者是地球文,或者是火星文。
输出格式:
对应输入的每一行,在一行中输出翻译后的另一种语言的数字。
输入样例:
4
29
5
elo nov
tam
输出样例:
hel mar
may
115
13
#include"bits/stdc++.h"
using namespace std;
string ch;
string a,b;
int change1(string s)
{
int len=s.length(),result=0; if(len>4)
{ a=s.substr(0,3);
b=s.substr(4,6);
if(b=="jan") result=1;
else if(b=="feb") result=2;
else if(b=="mar") result=3;
else if(b=="apr") result=4;
else if(b=="may") result=5;
else if(b=="jun") result=6;
else if(b=="jly") result=7;
else if(b=="aug") result=8;
else if(b=="sep") result=9;
else if(b=="oct") result=10;
else if(b=="nov") result=11;
else if(b=="dec") result=12;
if(a=="tam") result=result+13;
else if(a=="hel") result=result+13*2;
else if(a=="maa") result=result+13*3;
else if(a=="huh") result=result+13*4;
else if(a=="tou") result=result+13*5;
else if(a=="kes") result=result+13*6;
else if(a=="hei") result=result+13*7;
else if(a=="elo") result=result+13*8;
else if(a=="syy") result=result+13*9;
else if(a=="lok") result=result+13*10;
else if(a=="mer") result=result+13*11;
else if(a=="jou") result=result+13*12;
}
else
{
a=s.substr(0,3);
if(a=="tret");
else if(a=="jan") result=1;
else if(a=="feb") result=2;
else if(a=="mar") result=3;
else if(a=="apr") result=4;
else if(a=="may") result=5;
else if(a=="jun") result=6;
else if(a=="jly") result=7;
else if(a=="aug") result=8;
else if(a=="sep") result=9;
else if(a=="oct") result=10;
else if(a=="nov") result=11;
else if(a=="dec") result=12;
else if(a=="tam") result=13;
else if(a=="hel") result=13*2;
else if(a=="maa") result=13*3;
else if(a=="huh") result=13*4;
else if(a=="tou") result=13*5;
else if(a=="kes") result=13*6;
else if(a=="hei") result=13*7;
else if(a=="elo") result=13*8;
else if(a=="syy") result=13*9;
else if(a=="lok") result=13*10;
else if(a=="mer") result=13*11;
else if(a=="jou") result=13*12;
}
return result;
}
void change2(int n)
{
int a,b;
a=n/13;
b=n%13;
if(a==0)
{
if(b==0) cout<<"tret"<<endl;
else if(b==1) cout<<"jan"<<endl;
else if(b==2) cout<<"feb"<<endl;
else if(b==3) cout<<"mar"<<endl;
else if(b==4) cout<<"apr"<<endl;
else if(b==5) cout<<"may"<<endl;
else if(b==6) cout<<"jun"<<endl;
else if(b==7) cout<<"jly"<<endl;
else if(b==8) cout<<"aug"<<endl;
else if(b==9) cout<<"sep"<<endl;
else if(b==10) cout<<"oct"<<endl;
else if(b==11) cout<<"nov"<<endl;
else if(b==12) cout<<"dec"<<endl;
}
else
{
if(a==1) cout<<"tam";
else if(a==2) cout<<"hel";
else if(a==3) cout<<"maa";
else if(a==4) cout<<"huh";
else if(a==5) cout<<"tou";
else if(a==6) cout<<"kes";
else if(a==7) cout<<"hei";
else if(a==8) cout<<"elo";
else if(a==9) cout<<"syy";
else if(a==10) cout<<"lok";
else if(a==11) cout<<"mer";
else if(a==12) cout<<"jou";
if(b!=0) cout<<' ';
else cout<<endl;
if(b==1) cout<<"jan"<<endl;
else if(b==2) cout<<"feb"<<endl;
else if(b==3) cout<<"mar"<<endl;
else if(b==4) cout<<"apr"<<endl;
else if(b==5) cout<<"may"<<endl;
else if(b==6) cout<<"jun"<<endl;
else if(b==7) cout<<"jly"<<endl;
else if(b==8) cout<<"aug"<<endl;
else if(b==9) cout<<"sep"<<endl;
else if(b==10) cout<<"oct"<<endl;
else if(b==11) cout<<"nov"<<endl;
else if(b==12) cout<<"dec"<<endl;
}
}
int main()
{
int N;
cin>>N; getchar();
for(int i=0;i<N;i++)
{
getline(cin,ch);
if(ch[0]>='0'&&ch[0]<='9')
{
int n=0;
for(int i=0;i<ch.length();i++)
{
int a=ch[i]-'0';
n=n*10+a;
}
change2(n);
}
else cout<<change1(ch)<<endl;
}
return 0;
}
柳神的
#include <iostream>
#include <string>
using namespace std;
string a[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};
string b[13] = {"####", "tam", "hel", "maa", "huh", "tou", "kes", "hei", "elo", "syy", "lok", "mer", "jou"};
string s;
int len;
void func1(int t) {
if (t / 13) cout << b[t / 13];
if ((t / 13) && (t % 13)) cout << " ";
if (t % 13 || t == 0) cout << a[t % 13];
}
void func2() {
int t1 = 0, t2 = 0;a
string s1 = s.substr(0, 3), s2;
if (len > 4) s2 = s.substr(4, 3);
for (int j = 1; j <= 12; j++) {
if (s1 == a[j] || s2 == a[j]) t2 = j;
if (s1 == b[j]) t1 = j;
}
cout << t1 * 13 + t2;
}
int main() {
int n;
cin >> n;
getchar();
for (int i = 0; i < n; i++) {
getline(cin, s);
len = s.length();
if (s[0] >= '0' && s[0] <= '9')
func1(stoi(s));
else
func2();
cout << endl;
}
return 0;
}
我这里没想起来用下表索引直接手动打表了一波,可以参考柳神的代码写的很简洁!
PTA乙级1044C++(手动打表hhh)的更多相关文章
- PTA 乙级解题笔记 1001 害死人不偿命的(3n+1)猜想
卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 ...
- hibernate一对一关联手动改表后No row with the given identifier exists:
articleId手动改了一个并不存在的值 把被控端的id改成存在的就好了
- ORA-01033: ORACLE initialization or shutdown in progress --手动删除表空间 DBF 后无法登陆问题
进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID: 2.执行sqlplus "/as sysdba" SQL>shutdown immediat ...
- 2018年秋PTA乙级回顾
距离上次我一个人参加PAT考试已经过去快一个学期了,想想上次自己也是搞笑,自己一个人被这个书包就去了ZZ,人生地不熟的,乘坐公交车还坐反了.考完试因为不知道要等到考试结束就可以领取成绩证书,自己连那张 ...
- Abp VNext分表分库,拒绝手动,我们要happy coding
Abp VNext 分表分库 ShardingCore ShardingCore 易用.简单.高性能.普适性,是一款扩展针对efcore生态下的分表分库的扩展解决方案,支持efcore2+的所有版本, ...
- 通过手动创建hibernate工厂,自动生成表,完成数据库备份还原功能
最近做toB.toG业务,普遍要去适配各种国产数据库,所以不得不用hibernate,过去这么多年一直都是用mybatis+mysql,现在重拾hibernate,专注跨数据库,感兴趣的加关注. 需求 ...
- 填坑 | .NET core项目远程部署后连接数据库 mysql表大小写敏感问题
欣喜成功部署了项目之后又遭遇重创hhh,swagger调试数据库,报错 MySql.Data.MySqlClient.MySqlException(0x80004005) 我猜是大小写的问题,一查果然 ...
- POST方式提交表单时,后台接受实体如果继承了父类,将无法映射表单对应数据
引言 刚才在做一个post提交表单时,我在表单里放了几个隐藏域用来存放数据,表单name属性和后台实体属性签名保持一致.只是后台Action参数包含继承关系,所以无法获取到表单对应的值.刚开始一直纳闷 ...
- [Django]Django1.8修改MySQL已存在表的问题?
前言:django1.8版本出现这种问题,关于标题不好命令,直接看正文问题描述! 问题描述: 在已经生成了models.py中表的情况下,更改了modes.py中的表,但是syncdb不起作用报错.于 ...
- SQL语句汇总(一)——数据库与表的操作以及创建约束
首先,非常感谢大家对上篇博文的支持,真是让本菜受宠若惊,同时对拖了这么久才出了此篇表示抱歉. 前言:此文旨在汇总从建立数据库到联接查询等绝大部分SQL语句.SQL语句虽不能说很多,但稍有时间不写就容易 ...
随机推荐
- 我开源了团队内部基于SpringBoot Web快速开发的API脚手架stater
我们现在使用SpringBoot 做Web 开发已经比之前SprngMvc 那一套强大很多了. 但是 用SpringBoot Web 做API 开发还是不够简洁有一些. 每次Web API常用功能都需 ...
- 前端Vuer,请收好这份《Vue组件单元测试》宝典,给自己多一些安全感
大家好,我是 Kagol. 作为一名前端,在做业务开发的过程中,你是否曾经: 因为担心上线之后出bug,而反复手工验证自己负责的模块 不敢修改现有的"屎山"(别人写的或者是自己1年 ...
- pandas 显示所有的行和列
import pandas as pd # 显示所有列,所有行 pd.set_option('display.max_columns', None) pd.set_option('display.ma ...
- 配置DHCP
配置DHCP 条件:关闭防火墙 和selinux 1,安装dhcp服务 [root@localhost ~]#yum install dhcp -y#安装dhcp服务 2,查看配置文件 [root@l ...
- Java源代码是如何编译,加载到内存中的?
1.前言 相信许多开发同学看过<深入理解java虚拟机>,也阅读过java虚拟机规范,书籍和文档给人的感觉不够直观,本文从一个简单的例子来看看jvm是如何工作的吧. 本文所有操作均在mac ...
- 可实现自动驾驶的飞机大战(C++)
PS:觉得可以的uu帮忙点个star啦,最近在找工作,希望star多一点能写到简历上 B站演示视频: 基于C++实现的可自动驾驶的飞机大战_单机游戏热门视频 (bilibili.com) Github ...
- [MAUI]在.NET MAUI中实现可拖拽排序列表
.NET MAUI 中提供了拖放(drag-drop)手势识别器,允许用户通过拖动手势来移动控件.在这篇文章中,我们将学习如何使用拖放手势识别器来实现可拖拽排序列表.在本例中,列表中显示不同大小的磁贴 ...
- NOIP 2022 VP游记
总结:挂大分. HA NOIP没初中生的份,VP. CSP-S 图论专场 NOIP 数数专场. CCF 我服你. T1 看完之后,感觉不难,瞎搞了 40min+,过了大样例. 对拍不会写. T2 猜不 ...
- SpringBoot 笔记
SpringBoot 笔记 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服 ...
- 谁家面试往死里问 Swagger 啊?
大家好,我是小富- 前言 说个挺奇葩的事,有个老铁给我发私信吐槽了一下它的面试经历,他去了个国企单位面试,然后面试官跟他就Swagger的问题聊了半个多小时.额- 面试嘛这些都不稀奇,总能遇到是千奇百 ...