南邮 OJ 2067 数数
来源:互联网 发布:java如何一行输出 编辑:程序博客网 时间:2024/05/21 09:36
数数
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 44 测试通过 : 19
总提交 : 44 测试通过 : 19
比赛描述
数数
将中文数字的拼音字符串转为最终的数字;每个字拼音的首字母大写,比如:JiuWanJiuQianJiuBaiJiuShiJiu表示九万九千九百九十九,即阿拉伯数字,99999。
你当然记得每个数字的汉语拼音,但是还是提示你一下,Ling、Yi、Er、San、Si、Wu、Liu、Qi、Ba、Jiu、Shi、Bai、Qian、Wan。
为简单起见,我们要处理的数字在10万以内,不含负数,十、百、千、万等单位前面一定有数字,如YiShi表示10。
输入
包含多组测试样例,每组为中文数字的拼音字符串。
输出
对每个样例输出对应的阿拉伯数字
样例输入
SanBaiLingWu
JiuWanJiuQianJiuBaiJiuShiJiu
样例输出
305
99999
提示
undefined
题目来源
HW编码大赛
#include<iostream>#include<string>using namespace std;int number(string s){if("Yi"==s){return 1;}else if("Er"==s){return 2;}else if("San"==s){return 3;}else if("Si"==s){return 4;}else if("Wu"==s){return 5;}else if("Liu"==s){return 6;}else if("Qi"==s){return 7;}else if("Ba"==s){return 8;}else if("Jiu"==s){return 9;}else{return -1;}}int main(){string str,s;int a[5];int i,n,num,index;bool LingFlag=0;while(cin>>str){index = 0;n = (int)str.length();for(i=0;i<5;++i){a[i] = 0;}s.clear();for(i=0;i<n;++i){s += str[i];if(i+1==n || str[i+1]>='A'&& str[i+1]<='Z'){//接收到完整汉子拼音if("Wan"==s){a[4] = num;num = 0;LingFlag = 0;index = 4;}else if("Qian"==s){a[3] = num;num = 0;LingFlag = 0;index = 3;}else if("Bai"==s){a[2] = num;num = 0;LingFlag = 0;index = 2;}else if("Shi"==s){a[1] = num;num = 0;LingFlag = 0;index = 1;}else if("Ling"==s){LingFlag = 1;}else{num = number(s);}s.clear();}}if(index<=1 || LingFlag){a[0] = num;}else if(index>1){a[--index] = num;}for(i=4;!a[i] && i>=0;--i);while(i>=0){cout<<a[i--];}cout<<endl;}}
0 0
- 南邮 OJ 2067 数数
- 南邮 OJ 2060 数数问题
- OJ——手指数数
- 南阳oj 题目198 数数
- 南阳OJ-题目198:数数
- 小鑫数数儿 (sdut oj)
- 数数 南邮NOJ2060
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- 数数
- Adobe Dreamweaver CS6 下载及破解教程
- 类与对象(一)
- Parcelable和Serializable的区别
- autolayout - sizeClass - Masonry - 3
- 最好用的下拉刷新
- 南邮 OJ 2067 数数
- android 究竟是什么决定了app的名称 application label activity label
- app后端设计-- 数据库分表
- Debian8下搭建IVRE(docker方式)
- 仿新版QQ锁屏下弹窗
- Codeforces Round #Pi (Div. 2)
- LTE中的上行参考信号
- cocos2dx-音乐音效
- 1426POJ