PAT (Advanced Level) 1082. Read Number in Chinese (25)
模拟题。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<queue>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std; string num[]=
{
"ling","yi","er","san","si",
"wu","liu","qi","ba","jiu"
};
string tmp="";
string ans="";
string s=""; string f(string TMP)
{
if(TMP[]==''&&TMP[]==''&&TMP[]==''&&TMP[]=='') return "ling";
string t="";
int p;
for(int i=TMP.length()-;i>=;i--)
if(TMP[i]!='') {p=i; break;} for(int i=;i<=p;i++) t=t+TMP[i]; if(t=="" ) return "ling"; if(t.length()==) return "ling";
if(t.length()==) return num[t[]-''];
if(t.length()==)
{
if(t[]=='') return num[t[]-'']+" Shi";
return num[t[]-'']+" shi "+num[t[]-''];
}
if(t.length()==)
{
if(t[]==''&&t[]=='') return num[t[]-'']+" Bai";
if(t[]==''&&t[]!='') return num[t[]-'']+" Bai "+num[t[]-'']+" Shi";
if(t[]!=''&&t[]=='') return num[t[]-'']+" Bai ling "+num[t[]-''];
if(t[]!=''&&t[]!='') return num[t[]-'']+" Bai "+num[t[]-'']+" Shi "+num[t[]-''];
}
if(t.length()==)
{
if(t[]==''&&t[]==''&&t[]=='') return num[t[]-'']+" Qian";
if(t[]!=''&&t[]==''&&t[]=='') return num[t[]-'']+" Qian ling "+num[t[]-''];
if(t[]==''&&t[]!=''&&t[]=='') return num[t[]-'']+" Qian ling "+num[t[]-'']+" Shi";
if(t[]!=''&&t[]!=''&&t[]=='') return num[t[]-'']+" Qian ling "+num[t[]-'']+" Shi "+num[t[]-''];
if(t[]==''&&t[]==''&&t[]!='') return num[t[]-'']+" Qian "+num[t[]-'']+" Bai";
if(t[]!=''&&t[]==''&&t[]!='') return num[t[]-'']+" Qian "+num[t[]-'']+" Bai ling "+num[t[]-''];
if(t[]==''&&t[]!=''&&t[]!='') return num[t[]-'']+" Qian "+num[t[]-'']+" Bai "+num[t[]-'']+" Shi";
if(t[]!=''&&t[]!=''&&t[]!='') return num[t[]-'']+" Qian "+num[t[]-'']+" Bai "+num[t[]-'']+" Shi "+num[t[]-''];
}
} int main()
{
cin>>tmp;
int len=tmp.length();
for(int i=;i<len/;i++)
swap(tmp[i],tmp[len-i-]); if(tmp[tmp.length()-]=='-') ans=ans+"Fu "; for(int i=;i<tmp.length();i++)
{
if(tmp[i]=='-') continue;
else s=s+tmp[i];
} if(s.length()==)
{
string s1,s2,s3; string g="";
g=g+s[]+s[]+s[]+s[];
s2=f(g); g="";
g=g+s[]+s[]+s[]+s[];
s3=f(g); ans=ans+num[s[s.length()-]-'']+" Yi"; if(s2=="ling") {}
else
{
ans=ans+" ";
if(s[]=='') ans=ans+"ling ";
ans=ans+s2;
ans=ans+" Wan";
} if(s3=="ling"){}
else
{
ans=ans+" ";
if(s[]=='') ans=ans+"ling ";
ans=ans+s3;
}
}
else if(s.length()>=&&s.length()<=)
{
string s2;
string s3; int len=s.length();
for(int i=len;i<;i++) s=s+''; string g;
g=g+s[]+s[]+s[]+s[];
s2=f(g); g="";
g=g+s[]+s[]+s[]+s[];
s3=f(g); ans=ans+s2;
ans=ans+" Wan"; if(s3=="ling"){}
else
{
ans=ans+" ";
if(s[]=='') ans=ans+"ling ";
ans=ans+s3;
} }
else if(s.length()<=)
{
string s3; int len=s.length();
for(int i=len;i<;i++) s=s+''; string g;
g=g+s[]+s[]+s[]+s[];
s3=f(g); ans=ans+s3;
} cout<<ans<<endl; return ;
}
PAT (Advanced Level) 1082. Read Number in Chinese (25)的更多相关文章
- PTA (Advanced Level)1082.Read Number in Chinese
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese ...
- 【PAT甲级】1082 Read Number in Chinese (25 分)
题意: 输入一个九位整数,输出它的汉字读法(用拼音表示). trick: 字符串数组""其实会输出一个空格,而不是什么都不输出,导致测试点0和4格式错误. AAAAAccepted ...
- PAT (Advanced Level) 1024. Palindromic Number (25)
手动模拟加法高精度. 注意:如果输入数字的就是回文,这个时候输出0步. #include<iostream> #include<cstring> #include<cma ...
- PAT (Advanced Level) Practise - 1094. The Largest Generation (25)
http://www.patest.cn/contests/pat-a-practise/1094 A family hierarchy is usually presented by a pedig ...
- 1082. Read Number in Chinese (25)
题目如下: Given an integer with no more than 9 digits, you are supposed to read it in the traditional Ch ...
- 1082. Read Number in Chinese (25)-字符串处理
题意就是给出9位以内的数字,按照汉子的读法读出来. 读法请看下方的几个例子: 5 0505 0505 伍亿零伍佰零伍万零伍佰零伍 5 5050 5050 伍亿伍仟零伍拾万伍仟零伍拾 (原本我以为这个 ...
- 1082 Read Number in Chinese (25分)
// 1082.cpp : 定义控制台应用程序的入口点. // #include <iostream> #include <string> #include <vecto ...
- PAT (Advanced Level) 1102. Invert a Binary Tree (25)
简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...
- PAT (Advanced Level) 1098. Insertion or Heap Sort (25)
简单题.判断一下是插排还是堆排. #include<cstdio> #include<cstring> #include<cmath> #include<ve ...
随机推荐
- 解析JSON对象与字符串之间的相互转换
在开发的过程中,如果对于少量参数的前后台传递,可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,这样后台 接受的时候Request多个很麻烦 ...
- Docker学习笔记 — Docker私有仓库搭建【转载】
标签: Docker 2015-03-10 21:08 24190人阅读 评论(0) 收藏 举报 分类: Docker(26) 目录(?)[+] 和Mavan的管理一样,Dockers不仅 ...
- php秒杀
我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 ? 1 2 3 4 5 if(库存数量 > 0) { //生成订单... sql2:库存-1 ...
- 怎样将MySQL数据库上传到服务器
首先,需要将本地的数据库导出来,作为一个数据文件,以备稍后上传到服务器用,在本地登陆phpmyadmin控制面板: 登陆成功后,在左侧选择需要操作的数据库: 选择后,页面会自动刷新,然后再在右边点击[ ...
- phpmyadmin配置方式
简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面 ...
- [转]new一个Object对象占用多少内存?
我们分解下ArrayList arr = new ArrayList();等同于ArrayList arr = null;//初始化arr = new ArrayList();//实例化这两个过程.初 ...
- UIImage 和 UIImageView区别
// // ViewController.m // 06-UIImage 和 UIImageView // // Created by Stephen on 16/4/18. // Copyright ...
- Linux学习 -- 文件系统管理
1 分区和文件系统 分区类型 主分区:<= 4个 扩展分区:只能有一个,也算主分区的一种 不能存储数据和格式化,只能用来包含逻辑分区 逻辑分区:扩展分区中划分的 IDE--最多59个 ...
- ActiveMQ的配置与使用
1.什么是ActiveMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来 ...
- int *p[4]与int (*q)[4]的区别
以上定义涉及两个运算符:“*”(间接引用).“[]”(下标),“[]”的优先级别大于“*”的优先级别. 首先看int *p[4],“[]”的优先级别高,所以它首先是个大小为4的数组,即p[4]:剩下的 ...