PAT 1082. Read Number in Chinese (25)
来源:互联网 发布:国外域名需要备案吗 编辑:程序博客网 时间:2024/05/17 00:58
1082. Read Number in Chinese (25)
Given an integer with no more than 9 digits, you are supposed to read it in the traditional Chinese way. Output "Fu" first if it is negative. For example, -123456789 is read as "Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiu". Note: zero ("ling") must be handled correctly according to the Chinese tradition. For example, 100800 is "yi Shi Wan ling ba Bai".
Input Specification:
Each input file contains one test case, which gives an integer with no more than 9 digits.
Output Specification:
For each test case, print in a line the Chinese way of reading the number. The characters are separated by a space and there must be no extra space at the end of the line.
Sample Input 1:-123456789Sample Output 1:
Fu yi Yi er Qian san Bai si Shi wu Wan liu Qian qi Bai ba Shi jiuSample Input 2:
100800Sample Output 2:
yi Shi Wan ling ba Bai
哇。这小破题规则贼繁琐。关键在于0的处理。
#include <iostream>#include<stdio.h>#include<queue>#include<algorithm>#include<string.h>#include<string>#include<vector>using namespace std;int main(){ string a; cin>>a; int flag=0; int kg=0; if(a.size()==1) { if(a[0]=='0') {cout<<"ling";return 0;} } if(a.size()==2) { if(a[0]=='-'&&a[1]=='0') {cout<<"ling";return 0;} // if(a[0]=='-') } char path[15]; int p=0; if(a[0]=='-') {cout<<"Fu";flag=1;kg=1;} { for(int i=a.size()-1;i>=flag;i--) path[p++]=a[i]; char last=0; for(int i=p-1;i>=0;i--) { int tmp=path[i]-'0'; switch(tmp) { case 0:if(kg==1&&last!=0) {cout<<' ';kg=1;cout<<"ling";}break; case 1:if(kg==1) cout<<' ';kg=1;cout<<"yi";break; case 2:if(kg==1) cout<<' ';kg=1;cout<<"er";break; case 3:if(kg==1) cout<<' ';kg=1;cout<<"san";break; case 4:if(kg==1) cout<<' ';kg=1;cout<<"si";break; case 5:if(kg==1) cout<<' ';kg=1;cout<<"wu";break; case 6:if(kg==1) cout<<' ';kg=1;cout<<"liu";break; case 7:if(kg==1) cout<<' ';kg=1;cout<<"qi";break; case 8:if(kg==1) cout<<' ';kg=1;cout<<"ba";break; case 9:if(kg==1) cout<<' ';kg=1;cout<<"jiu";break; } if(tmp) switch(i) { case 1:if(kg==1) cout<<' ';kg=1;cout<<"Shi"; if(path[0]=='0') { last=0;goto tutu; } break; case 2:if(kg==1) cout<<' ';kg=1;cout<<"Bai"; if(path[1]=='0'&&path[0]=='0') { last=0;goto tutu; } break; case 3:if(kg==1) cout<<' ';kg=1;cout<<"Qian"; if(path[2]=='0'&&path[1]=='0'&&path[0]=='0') { last=0;goto tutu; } break; // case 4:if(kg==1) cout<<' ';kg=1;cout<<"Wan";break; case 5:if(kg==1) cout<<' ';kg=1;cout<<"Shi"; if(path[4]=='0') { last=0;goto tutu; } break; case 6:if(kg==1) cout<<' ';kg=1;cout<<"Bai"; if(path[5]=='0'&&path[4]=='0') { last=0;goto tutu; } break; case 7:if(kg==1) cout<<' ';kg=1;cout<<"Qian"; if(path[6]=='0'&&path[5]=='0'&&path[4]=='0') { last=0;goto tutu; } break; // case 8:if(kg==1) cout<<' ';kg=1;cout<<"Yi";break; case 9:if(kg==1) cout<<' ';kg=1;cout<<"Shi"; if(path[8]=='0') { last=0;goto tutu; } break; } last=tmp; tutu: if(i==4) {cout<<" Wan";last=999;} if(i==8) {cout<<" Yi";last=999;} } } return 0;}
- PAT 1082. Read Number in Chinese (25)
- pat 1082. Read Number in Chinese (25)
- PAT 1082. Read Number in Chinese (25)
- PAT 1082. Read Number in Chinese(25)
- PAT 1082. Read Number in Chinese (25)
- 【PAT】1082. Read Number in Chinese (25)
- PAT:1082. Read Number in Chinese (25)
- 1082. Read Number in Chinese (25) PAT
- PAT 1082. Read Number in Chinese (25)
- PAT 1082. Read Number in Chinese
- 【PAT】1082. Read Number in Chinese
- PAT A.1082. Read Number in Chinese
- 【PAT】A1082. Read Number in Chinese (25)
- PAT A 1082. Read Number in Chinese (25)
- PAT(Advance) 1082. Read Number in Chinese (25)
- PAT-1082. Read Number in Chinese (25)(模拟)
- 1082. Read Number in Chinese (25)-PAT甲级真题
- 1082. Read Number in Chinese (25) PAT甲级
- java 图形用户界面设计 之 在界面中添加菜单栏 示例程序及相关方法介绍
- windows上配置eclipse
- 百度云的高速下载技巧系列2---多线程文件下载工具idm v6.28.1绿色免注册版(PC)
- Hibernate入门学习笔记
- 配置Hibernate中的常见错误解决方案
- PAT 1082. Read Number in Chinese (25)
- 并发操作与数据的不一致性
- HIVE获取最新分区的数据的方法
- JAVA中类的加载机制
- 牛客网日常刷题错题汇总2017-09-06
- 05.左值引用和指针
- CSS笔记——padding
- 校园网环境下 主机SSH到虚拟机的设置方式
- nio--未完成