1082 Read Number in Chinese
题目
题意: 给定一个不超过9位的整数,你应该用传统的中文方式阅读它~ 如果是负的,首先输出“Fu”。 例如,-123456789被读作“Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu”。 注意:零(“ling”)必须根据中国传统正确处理。 例如,100800是“yi Shi Wan ling ba Bai”~
tip:模拟(反正我没做出来,转载
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string num[10] = { "ling","yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };
string c[6] = { "Ge","Shi", "Bai", "Qian", "Yi", "Wan" };
int J[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
vector<string> res;
int main() {int n;cin >> n;if (n == 0) {cout << "ling";return 0;}if (n < 0) {cout << "Fu ";n = -n;}int part[3];part[0]= n / 100000000;part[1]= (n % 100000000) / 10000;part[2] = n % 10000;bool zero = false; //是否在非零数字前输出合适的lingint printCnt = 0; //用于维护单词前没有空格,之后输入的单词都在前面加一个空格。for (int i = 0; i < 3; i++) {int temp = part[i]; //三个部分,每部分内部的命名规则都一样,都是X千X百X十Xfor (int j = 3; j >= 0; j--) {int curPos = 8 - i * 4 + j; //当前数字的位置if (curPos >= 9) continue; //最多九位数int cur = (temp / J[j]) % 10;//取出当前数字if (cur != 0) {if (zero) {printCnt++ == 0 ? cout<<"ling" : cout<<" ling";zero = false;}if (j == 0)printCnt++ == 0 ? cout << num[cur] : cout << ' ' << num[cur]; //在个位,直接输出elseprintCnt++ == 0 ? cout << num[cur] << ' ' << c[j] : cout << ' ' << num[cur] << ' ' << c[j]; //在其他位,还要输出十百千} else {if (!zero && j != 0 && n / J[curPos] >= 10) zero = true; //注意100020这样的情况}}if (i != 2 && part[i]>0) cout << ' ' << c[i + 4]; //处理完每部分之后,最后输出单位,Yi/Wan}return 0;
}
1082 Read Number in Chinese相关推荐
- PAT甲级1082 Read Number in Chinese:[C++题解]字符串处理
文章目录 题目分析 题目来源 题目分析 来源:acwing 分析 从后往前,四位数作为1组来处理.每组单位最多是十百千,组间单位是万和亿.以123456789为例,分成三组为1,2345,6789,下 ...
- 1082 Read Number in Chinese (25 分)【难 / 模拟 字符串】
https://pintia.cn/problem-sets/994805342720868352/problems/994805385053978624 写的太垃圾,不想详细说,等有时间再写一个简洁 ...
- PAT甲级1082 Read Number in Chinese(JAVA版)
本题考查 字符串处理 思路 除了0之外 数字1-9分别对应其小写拼音,另外当 "数组长度 - 数字所在数组索引" 单位 9 Yi 8.4 Qian 7.3 Bai 6.2 Shi ...
- PAT甲级题目翻译+答案 AcWing(字符串处理)
1001 A+B Format (20 分) 题意 :将整数转换成标准格式 思路 :从后往前遍历字符串进行模拟,每三个数字加一个逗号,但不能是在最前面加逗号,也不能是加在负号后面 #include & ...
- PAT (Advanced Level) Practice 题解代码 - II (1051-1100)
PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...
- 【晴神宝典刷题路】codeup+pat 题解索引(更新ing
记录一下每天的成果,看多久能刷完伐 codep pat乙级 pat甲级 c2 c/c++快速入门 <算法笔记>2.2小节--C/C++快速入门->顺序结构 例题1-1-1 按要求输出 ...
- 【PAT甲级】A1051-A1100刷题记录
文章目录 (栈) A1051 Pop Sequence (25 分) 0.47 (静态链表) A1052 Linked List Sorting (25 分) 0.21 (静态树+先根遍历DFS) A ...
- 刷PAT甲级的各题思路、细节以及遇到的问题记录
1001 A+B Format (20分) 因为一定会用到字符串,而string非常好用,但是用的时候一定要注意不能越界访问,否则会在运行时出现abort() has been called. 100 ...
- PAT题型分类 记录汇总
这篇博客记录了我在跟着<算法笔记>以及习题册<算法笔记 上机实践指南>刷了PAT的题目之后的一些解题方法的总结与心得. 第三章 入门模拟 1. 简单模拟 一般解题思路 这一小节 ...
最新文章
- QT 中使用 OpenCv 的 CascadeClassifier 报错
- 查看删除的帐号的DN名称(活动目录快照配置管理系列六)
- SpringMVC启动后自动执行
- Cannot load onnxruntime.capi. Error: DLL load failed: 找不到指定的模块
- extjs弹出窗口查看文本内容-new Ext.Window
- 面试 | 你说你熟悉MySql,那你就来谈谈InnoDB如何解决幻读的?
- Asp.net输出Excel文件并且下载该文件以及某些细节问题解决
- Linux操作系统相关命令
- 分布式架构之缓存系统
- 干货:Java并发编程系列之volatile(二)
- 【数据结构与算法】二分法的边界问题总结
- 第一行代码(Android)第二版PDF和源码
- 好工具推荐系列:Feem和Send-anywhere,跨平台局域网传输工具,文件共享工具
- 零基础学习SQL Server(一)---查询语句在项目实例中的执行
- APP脱壳之MDEX的使用步骤
- SQL Server中自定义函数:用指定的分隔符号分割字符串
- 使用R语言进行时间序列(arima,指数平滑)分析
- 计算机应用基础系统总线,2019年自学考试计算机应用基础试题(4)
- 11.14-11.21
- 天耀18期 – 6.面向对象-类和对象【作业】.