题目:输入一个小于1万亿的正整数,输出这个正整数的读法的拼音表示。

如,输入:1234,输出:yiqianerbaisanshisi

输入:1234567,输出:yibaiershisanwansiqianwubailiushiqi

注意:2不读做liang,而读作er。

下面有两种coding版本,第一种较粗暴,是一个字符一个字符的处理,代码量很大。第二种用map存储一下对应为的后缀,代码量小一点。并且注意:第一种coding方法没有处理123004这种中间有两个零的情况(可以加点代码就能把这种情况考虑到,懒得加了),而第二种情况处理了这种情况。

第一种方法:每四位一组,读最高四位后(假如高四位不为空),后跟yi,接着读中间四位(假如中间四位不为空),后跟wan,接着读最低四位。第一种方法虽然coding量比较大,但思路也是非常简单。

代码如下:

#include<stdio.h>
#include<iostream>
using namespace std;int main()
{char source[20]="";char yi[5]="";char wan[5]="";char ge[5]="";char destination[10000];int i=0;scanf("%s",source);int len=strlen(source);if(len<5){   for(i=0;i<len;i++)ge[i]=source[i];ge[i]='\0';}   else if(len<9){   int j=0;for(i=len-4;i<len;i++,j++)ge[j]=source[i];ge[j]='\0';j=0;for(i=0;i<len-4;i++,j++){wan[j]=source[i];}wan[j]='\0';}   else{       int j=0;for(i=len-4;i<len;i++,j++)ge[j]=source[i];ge[j]='\0'; j=0;        for(i=len-8;i<len-4;i++,j++){wan[j]=source[i];}wan[j]='\0';j=0;for(i=0;i<len-8;i++,j++){yi[j]=source[i];}yi[j]='\0';}i=0;if(strlen(yi)!=0){int k=0;for(int yii=0;yii<strlen(yi);yii++){switch(yi[yii]){case '1':destination[i++]='y';destination[i++]='i';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '2':destination[i++]='e';destination[i++]='r';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '3':destination[i++]='s';destination[i++]='a';destination[i++]='n';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '4':destination[i++]='s';destination[i++]='i';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '5':destination[i++]='w';destination[i++]='u';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '6':destination[i++]='l';destination[i++]='i';destination[i++]='u';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '7':destination[i++]='q';destination[i++]='i';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '8':destination[i++]='b';destination[i++]='a';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '9':destination[i++]='q';destination[i++]='i';destination[i++]='u';switch(strlen(yi)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '0':destination[i++]='l';destination[i++]='i';destination[i++]='n';destination[i++]='g';k++;break;}}destination[i++]='y';destination[i++]='i';}if(strlen(wan)!=0){int k=0;for(int wani=0;wani<strlen(wan);wani++){switch(wan[wani]){case '1':destination[i++]='y';destination[i++]='i';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '2':destination[i++]='e';destination[i++]='r';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '3':destination[i++]='s';destination[i++]='a';destination[i++]='n';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}       k++;    break;  case '4':   destination[i++]='s';destination[i++]='i';switch(strlen(wan)-k){       case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}       k++;    break;  case '5':   destination[i++]='w';destination[i++]='u';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '6':destination[i++]='l';destination[i++]='i';destination[i++]='u';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '7':destination[i++]='q';destination[i++]='i';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '8':destination[i++]='b';destination[i++]='a';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '9':destination[i++]='q';destination[i++]='i';destination[i++]='u';switch(strlen(wan)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '0':destination[i++]='l';destination[i++]='i';destination[i++]='n';destination[i++]='g';k++;break;}}destination[i++]='w';destination[i++]='a';destination[i++]='n';}if(strlen(ge)!=0){int k=0;for(int gei=0;gei<strlen(ge);gei++){switch(ge[gei]){case '1':destination[i++]='y';destination[i++]='i';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '2':destination[i++]='e';destination[i++]='r';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '3':destination[i++]='s';destination[i++]='a';destination[i++]='n';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '4':destination[i++]='s';destination[i++]='i';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '5':destination[i++]='w';destination[i++]='u';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '6':destination[i++]='l';destination[i++]='i';destination[i++]='u';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '7':destination[i++]='q';destination[i++]='i';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '8':destination[i++]='b';destination[i++]='a';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '9':destination[i++]='q';destination[i++]='i';destination[i++]='u';switch(strlen(ge)-k){case 4:destination[i++]='q';destination[i++]='i';destination[i++]='a';destination[i++]='n';break;case 3:destination[i++]='b';destination[i++]='a';destination[i++]='i';break;case 2:destination[i++]='s';destination[i++]='h';destination[i++]='i';break;}k++;break;case '0':destination[i++]='l';destination[i++]='i';destination[i++]='n';destination[i++]='g';k++;break;}}}destination[i]='\0';cout<<destination<<endl;return 0;
}

第二种方法:用map<int,string>存储对应位的后缀是什么,其中int是这个位的索引(第几位),string表示对应的后缀,如第2为对应“shi”、第5位对应"wan"等。其实可以再用map<char,string>表示对应字符的拼音表示,如‘0’对应“ling”、'1'对应"yi"等,这里用了switch的方法,不是最优。代码如下:

#include<iostream>
#include<map>
using namespace std;int main()
{char source[20];char result[1000]="";cin>>source;map<int,string> suffix;map<int,int> suffix_len;suffix[2]="shi";suffix_len[2]=3;suffix[3]="bai";suffix_len[3]=3;suffix[4]="qian";suffix_len[4]=4;suffix[5]="wan";suffix_len[5]=3;suffix[6]="shi";suffix_len[6]=3;suffix[7]="bai";suffix_len[7]=3;suffix[8]="qian";suffix_len[8]=4;suffix[9]="yi";suffix_len[9]=2;suffix[10]="shi";suffix_len[10]=3;suffix[11]="bai";suffix_len[11]=3;suffix[12]="qian";suffix_len[12]=4;int len=strlen(source);int result_index=0;for(int i=len-1;i>=0;i--){switch(source[len-1-i]){case '1':strcat(result+result_index,"yi");result_index+=2;break;case '2':strcat(result+result_index,"er");result_index+=2;break;case '3':strcat(result+result_index,"san");result_index+=3;break;case '4':strcat(result+result_index,"si");result_index+=2;break;case '5':strcat(result+result_index,"wu");result_index+=2;break;case '6':strcat(result+result_index,"liu");result_index+=3;break;case '7':strcat(result+result_index,"qi");result_index+=2;break;case '8':strcat(result+result_index,"ba");result_index+=2;break;case '9':strcat(result+result_index,"jiu");result_index+=3;break;}if(source[len-1-i]=='0'){int j;for(j=len-1-i+1;j<(len-1-(((i+1)/4)*4-1));j++){if(source[j]!='0')break;}if(j==(len-1-(((i+1)/4)*4-1))){i=((i+1)/4)*4-1;strcat(result+result_index,suffix[i+2].c_str());result_index+=suffix_len[i+2];continue;}else{strcat(result+result_index,"ling");result_index+=4;i=len-1-j+1;continue;}}strcat(result+result_index,suffix[i+1].c_str());result_index+=suffix_len[i+1];}result[result_index]='\0';cout<<result<<endl;return 0;
}

输出以个小于1万亿的正整数的拼音读法相关推荐

  1. 大于或小于100万,1000万,1亿,10亿,1000亿,万亿,亿亿,10亿亿,100亿亿上下的10个质数(素数)...

    2019独角兽企业重金招聘Python工程师标准>>> 大于或小于百万,千万,1亿,十亿,百亿,千亿,万亿,十万亿,百万亿,千万亿,亿亿,十亿亿,百亿亿上下的10个质数(素数). U ...

  2. 合作伙伴说 | 一人行快,众人行远,与网易共建万亿新生态

    9月5日,网易于杭州举办"星云·海纳-2019网易企业业务合作伙伴大会",盘点网易深耕企业服务之路,发布基于未来新生态的合作伙伴战略. 大会邀请了多位大咖坐镇,分享云服务生态趋势洞 ...

  3. 深入解读首个万亿级语言模型Switch Transformer

    作者|AI Box 来源|RUC AI Box 本文深入解读了由 Google Brain 设计的名叫「Switch Transformer」的简化稀疏架构,可以将语言模型的参数量扩展至 1.6 万亿 ...

  4. 快速查找计算9百万万亿整数内全部素数(质数)的C++代码

    用素数筛查找小于等于某个给定整数的全部素数,是一种较为高效的方法,具体的原理网上很多,这里就不赘述了. 但即使都是运用的素数筛原理,不同的算法设计,也可以带来巨大的效率差异.最近从网上搜索学习了相关的 ...

  5. 每日生产万亿消息数据入库,腾讯如何突破大数据分析架构瓶颈

    背景介绍 对于腾讯庞大的大数据分析业务,几千台的 Hadoop 集群,近百 P 级的存储总量,每日产生万亿的消息数据入库,需要针对几十亿 IMEI 手机设备去重,并关联数千亿的历史全表,进行曝光.点击 ...

  6. 仅用 480 块 GPU 跑出万亿参数!全球首个“低碳版”巨模型 M6 来了

    继今年 3 月阿里达摩院发布国内首个千亿参数多模态大模型 M6(MultiModality-to-MultiModality MultitaskMega-transformer,以下简称 M6) 之后 ...

  7. 超越Google,快手落地业界首个万亿参数推荐精排模型

    整理 | 兆雨 责编 | 阿司匹林 出品 | AI科技大本营 精准的推荐系统模型是很多互联网产品的核心竞争力,个性化推荐系统旨在根据用户的行为数据提供"定制化"的产品体验.国民级短 ...

  8. 解密Elasticsearch技术,腾讯开源的万亿级分布式搜索分析引擎

    「免费学习 60+ 节公开课:投票页面,点击讲师头像」 作者 | johngqjiang,腾讯 TEG 云架构平台部研发工程师 来源 | 腾讯技术工程(ID:Tencent_TEG) [导读]Elas ...

  9. 用Go重构C语言系统,这个抗住春晚红包的百度转发引擎承接了万亿流量

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 11 月 20 日,百度的万亿流量转发引擎 BFE 登上了 GitHub Trending Top 3,今日 Star 已突破 2 ...

最新文章

  1. 龙邱MPU9250传感器 | 使用ESP32 模块进行测试
  2. 使用Android Studio新建Project并建立多个module
  3. spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建
  4. 《疯狂Java讲义》(十五)---- 内部类
  5. 关联查询objectid_SAP 删除的BOM如何查询呢?
  6. matlab计算abc三相短路电流_变频电源的安装及单相/三相变频电源电流计算公
  7. 怎么把柱形图和折线图放在一起_excel怎么把柱状图和折线图合并
  8. 2022.0831学习Java 笔记之Java常用类库(二)
  9. 12306验证码的一些思考
  10. 记升级springboot1.X 到springboot2.3.5踩的坑
  11. CM源码(CyanogenMod)源码编译
  12. 51单片机------闪烁灯(实验报告)
  13. 使用第三方SDK进行网页授权
  14. UNETR 医学图像分割架构 2D版 (Tensorflow2 Keras 实现UNETR)
  15. 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc
  16. 国科大学习资料--最优化计算方法(王晓)--第二次作业答案
  17. java考了80多分,八省联考成绩出炉,学生们表示“有些崩溃”,你考了多少分
  18. 阿里字体图标(iconfont)使用
  19. iSpring Suite 安装问题疑难解答
  20. 安卓 - 使用SQLite数据库

热门文章

  1. PTA 7-81 电费
  2. PIM-DM--理论详解
  3. linux centos apache+php+mysql 安装( 用包安装 非yum 安装)
  4. ISP : 灯箱光源(笔记)
  5. 自己怎么做引流推广?利用QQ群截流日引流量100
  6. c++正方形的面积源代码
  7. 【CVPR2020】百度入选22篇论文涵盖全视觉领域!
  8. chrom调试技巧大全,史上最全
  9. 我公司php本地与线上环境
  10. 常见移动机器人运动学模型总结