1082 Read Number in Chinese (25分)
2024-09-04 07:36:54
// 1082.cpp : 定义控制台应用程序的入口点。
// #include <iostream>
#include <string>
#include <vector>
using namespace std;
string str;
string s1[4] = { "Ge","Shi","Bai","Qian" };
string s2[10] = { "ling","yi","er","san","si","wu","liu","qi","ba","jiu" };
vector<string> rs, t;
int main()
{
int n;
cin >> n;
if (n<0)
cout << "Fu ";
else if (n == 0) {
cout << "ling"; /*一个零特判*/
return 0;
}
str = to_string(abs(n));
int len = str.size();
for (int i = 0; i < len; i++) {
rs.push_back(s2[str[i] - '0']);
int pos = len - i - 1;
if (pos % 4 && str[i] != '0') /* 0十->0*/
rs.push_back(s1[pos % 4]);
if (pos == 4)
rs.push_back("Wan"); /*到万位加万,亿位加亿*/
if (pos == 8)
rs.push_back("Yi");
}
for (int i = 0; i < rs.size(); i++) {
t.push_back(rs[i]);
if (i != 0 && rs[i] == "ling"&&rs[i - 1] == "ling") /*删除连续的零为一个零*/
t.pop_back();
}
t.push_back("Wan");
for (int i = 0; i < t.size()-1; i++) {
if (t[i] == "ling" && t[i + 1] == "Wan" )/*删除单个不需要的零如有1000->yi qian ling->yi qian*/
continue;
if (i != 0)
cout << " ";
cout << t[i];
}
return 0;
}
https://pintia.cn/problem-sets/994805342720868352/problems/994805385053978624
最新文章
- 使用DapperExtensions实现简单仓储
- 【BZOJ-1324】Exca王者之剑 最小割
- poj 2709
- ListableBeanFactory
- IDisposable接口
- Codeforces Round #117 (Div. 2)
- 用vi写一个C 程序
- Objective-C 【Category-非正式协议-延展】
- linux-进程相关
- C 这些东西的内存管理
- Getting Started with Core Data
- tag上、push上和pull 取Docker 映像
- js中数组的map()方法
- jmeter+maven+jenkins自动化接口测试(上)
- typescript 关于class属性类型定义被属性默认值覆盖的问题及解决方式
- windows环境下面批量修改文件夹名称
- Android环境准备
- java-jmx使用
- MT【94】由参数前系数凑配系数题1
- MyBatis -01- 初识 MyBatis + MyBatis 环境搭建