A1100 Mars Numbers (20 分)
一、技术总结
- 这一题可以使用map进行想打印存储,因为数据量不是很大,最后直接输出。但是还是觉得没有必要。
- 主要考虑两个问题,首先是数字转化为字符串,实质就是进制转化,但是有点不同,如果十位有数字,个位是0,不用输出这个0。所以使用了条件判断if(t / 13 && t % 13) cout << " ",来看是否需要输出后一位,如果不是也就没必要输出这个空格了,然后用if(t % 13) cout << a[t%13];来输出个位。
- 然后是字符串转化为数字,就是先存储整个字符串,然后分别提取个位和十位上的字符串即第一个字符串和第二个字符串使用substr(a, b)函数,a是起始地址,b是要提取的长度。这里需要考虑的问题是第一个即首个字符串可能是a[]数组中的也可能是b[]数组中的。但是后一个只能是a[]数组,然后分别用两个数字保存进制转化输出即可。
- 还有一个问题是需要判断是什么转化成什么,看下面代码即可。
- ** 在使用getline(cin, str)之前如果有过输入,如果是scanf要写成这个形式scanf("%d%*c",&n)或则直接同后一样加上getchar(),如果是cin,要之后就上一句getchar(); **
二、参考代码
#include<iostream>
#include<map>
#include<string>
#include<cmath>
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 str;
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;
string s1 = str.substr(0,3), s2;
if(len > 4) s2 = str.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;
//scanf("%d%*c", &n);
cin >> n;
getchar();
for(int i = 0; i < n; i++){
getline(cin, str);
len = str.length();
if(str[0] >= '0' && str[0] <= '9'){
func1(stoi(str));
}else{
func2();
}
cout << endl;
}
return 0;
}
A1100 Mars Numbers (20 分)的更多相关文章
- 【PAT甲级】1100 Mars Numbers (20 分)
题意: 输入一个正整数N(<100),接着输入N组数据每组包括一行字符串,将其翻译为另一个星球的数字. AAAAAccepted code: #define HAVE_STRUCT_TIMESP ...
- PAT 甲级 1027 Colors in Mars (20 分)
1027 Colors in Mars (20 分) People in Mars represent the colors in their computers in a similar way a ...
- 1027 Colors in Mars (20 分)
1027 Colors in Mars (20 分) People in Mars represent the colors in their computers in a similar way a ...
- pat 1027 Colors in Mars(20 分)
1027 Colors in Mars(20 分) People in Mars represent the colors in their computers in a similar way as ...
- pat1100. Mars Numbers (20)
1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People o ...
- PAT 甲级 1069 The Black Hole of Numbers (20 分)(内含别人string处理的精简代码)
1069 The Black Hole of Numbers (20 分) For any 4-digit integer except the ones with all the digits ...
- PAT 甲级 1023 Have Fun with Numbers (20 分)(permutation是全排列题目没读懂)
1023 Have Fun with Numbers (20 分) Notice that the number 123456789 is a 9-digit number consisting ...
- 1069 The Black Hole of Numbers (20分)
1069 The Black Hole of Numbers (20分) 1. 题目 2. 思路 把输入的数字作为字符串,调用排序算法,求最大最小 3. 注意点 输入的数字的范围是(0, 104), ...
- 1023 Have Fun with Numbers (20 分)
1023 Have Fun with Numbers (20 分) Notice that the number 123456789 is a 9-digit number consisting ...
随机推荐
- golang 安装脚本
#!/bin/bash env sudo yum -y install wget curl echo "download golang ..." # 获取最新的golangurl ...
- Android开发之OkHttp介绍
要论时下最火的网络请求框架,当属OkHttp了.自从Android4.4开始,google已经开始将源码中的HttpURLConnection替换为OkHttp,而在Android6.0之后的SDK中 ...
- 基于django的个人博客网站建立(五)
基于django的个人博客网站建立(五) 前言 网站效果可点击这里访问 之前鸽了两天,今天继续再写点 主要内容 今天加了个展示照片的功能,就叫他生活记录吧 先建表 class Record(model ...
- Bandizip解压压缩软件
上次重装系统以后,特别注意安装软件,在这里提一些比较好的 解压软件:Bandizip 这个是一个免费轻量级的软件,压缩解压速度快,没什么广告,推荐大家在官方下载 Bandizip下载网址 点击下载安装 ...
- C++ Debug 模式下程序崩溃: Expression: is_block_type_valid(header->block_use)
出现这样的错误,可能有很多种原因,而我出现崩溃的原因是由于代码中定义了vector容器, 未对它进行初始化操作导致的, 只要对它的大小进行初始化操作就行了 崩溃代码: vector<Rect& ...
- Git教程---由浅入深
初学者很难找到一个由浅入深,学完后能立刻上手的Git教程 Git用户 V&Git专家 Git是一个工具,是目前世界上最先进的分布式版本控制系统(没有之一). 集中式的版本控制系统 V& ...
- 解决IDEA中的DashBoard 不显示端口号
第一步:找到.idea目录下的workspace.xml文件 第二步:找到下图位置 并添加红色部分代码 添加代码如下: <option name="configurationTypes ...
- Web开发跨域问题
什么是域? 协议, ip(域名). 端口 前端:域 后端:域 js 进行跨域请求, 因为浏览器的同源策略,导致了两个不同域请求出错 浏览器 会尝试向后端发送 option 请求, --- ...
- 软件测试价值提升之路- 第二章"价值实现的起点"读书笔记
价值实现的起点 2.1 打破常规 打破哪些已经不适应现在软件开发需要的“准则”,明确需要在什么样的环境下.瞄准什么目标来实现测试的价值 找风险:研发内部测试 测试最基础的是找bug,但需要根据风险找最 ...
- 对于jenkins上前端项目 npm 或 yarn 打包 及 部署 使用
1.npm和yarn镜像源地址 npmMirror ~~~~~ https://skimdb.npmjs.com/registry/ edunpm ~~~~~~ http://registry.enp ...