ps做产品的网站,大连网站建设招标,wordpress侧边栏,西安华为公司问题描述Tom教授正在给研究生讲授一门关于基因的课程#xff0c;有一件事情让他颇为头疼#xff1a;一条染色体上有成千上万个碱基对#xff0c;它们从0开始编号#xff0c;到几百万#xff0c;几千万#xff0c;甚至上亿。比如说#xff0c;在对学生讲解第1234567009号…问题描述Tom教授正在给研究生讲授一门关于基因的课程有一件事情让他颇为头疼一条染色体上有成千上万个碱基对它们从0开始编号到几百万几千万甚至上亿。比如说在对学生讲解第1234567009号位置上的碱基时光看着数字是很难准确的念出来的。所以他迫切地需要一个系统然后当他输入12 3456 7009时会给出相应的念法十二亿三千四百五十六万七千零九用汉语拼音表示为shi er yi san qian si bai wu shi liu wan qi qian ling jiu这样他只需要照着念就可以了。你的任务是帮他设计这样一个系统给定一个阿拉伯数字串你帮他按照中文读写的规范转为汉语拼音字串相邻的两个音节用一个空格符格开。注意必须严格按照规范比如说“10010”读作“yi wan ling yi shi”而不是“yi wan ling shi”“100000”读作“shi wan”而不是“yi shi wan”“2000”读作“er qian”而不是“liang qian”。输入格式有一个数字串数值大小不超过2,000,000,000。输出格式是一个由小写英文字母逗号和空格组成的字符串表示该数的英文读法。样例输入1234567009样例输出shi er yi san qian si bai wu shi liu wan qi qian ling jiu自己的思路是4位数分一组一组一组地输出算法很无脑暴力代码也很冗长技术有限还没有找出其它更好的算法源代码#include#include#includeusing namespace std;int main(){int n,i,m,count0,mark3;//mark记录第一组首个不为0的数字的位置char *ch1[]{ling,yi,er,san,si,wu,liu,qi,ba,jiu,shi};char *ch2[]{shi,bai,qian,wan,yi};int num[5][4];//4位一组存储从个位开始的每一位数int j[5][4];//记录每组第一个不为0的数字的位置memset(num,-1,sizeof(num));memset(j,-1,sizeof(j));cinn;for(i0;i5,n0;i){for(m0;m4,n0;m){num[i][m]n%10;n/10;count;}}int p,q;p(count)/4;qcount%4;if(q!0){p;}else{q4;}//p为组数q表示最高位数字在该组的位置for(i0;i5;i){for(m0;m4;m){if(num[i][m]!0num[i][m]!-1){j[i][m]0;break;}}}for(i0;i4;i){if(num[0][i]!0num[0][i]!-1){marki;break;}}for(i4;i0;i--){int judge0;for(m3;m0;m--){if(num[i][m]!0num[i][m]!-1){judge0;//遇到非0时judge重置为0表示可输出“ling”if(i!p-1||m!q-1||num[i][m]!1||q!2){cout}//排除首位出现“yi shi”的情况if(m!0){cout}if(j[i][m]0i!0){cout}}if(num[i][m]0){if(i!0m!0judge0){coutjudge1;}//非第一组的ling的输出if(i0judge0mmark){coutjudge1;}//第一组ling的输出}}}return 0;}