1 / 3
文档名称:

华为上机---出圈问题及答案.doc

格式:doc   大小:22KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

华为上机---出圈问题及答案.doc

上传人:xzh051230 2019/6/19 文件大小:22 KB

下载得到文件列表

华为上机---出圈问题及答案.doc

相关文档

文档介绍

文档介绍:问题描述M个人围成一圈报数,数到N(1<N<10)的倍数或包含N这个数字时出圈,问剩下的最后一个人在原来的位置是多少?报数规则:1、从第一个人开始报数为1,下一个人报数为上一个人报数加12、报数的最大值为2000,如果报数超过2000,则下一个人重新从1开始报数要求实现函数intOutFunc(unsignedintiTotalNum,unsignedintiKey)【输入】iTotalNum: 开始报数前的总人数, 0<iTotalNum<65535     iKey:    题目中要求的数目N【输出】无【返回】剩下的人的原来的位置示例输入:iTotalNum=5, iKey=3返回:4输入:iTotalNum=15, iKey=3返回:10/*出圈问题*/#include<>#defineMAXSIZE1000boolcontainN(unsignedinti,unsignedintN){ unsignedinttemp=0; while(i>0) { temp=i%10; i=i/10; if((temp==N)||(i==N)) { returntrue; } } returnfalse;}voidOutFunc(unsignedintiTotalNum,unsignedintiKey){ unsignedintN=iKey; unsignedinti=0;unsignedintj=0; unsignedintK=0; unsignedintm=0; unsignedintt=0; unsignedintpre=0; unsignedintaa[MAXSIZE]={'\0'}; unsignedintp[MAXSIZE]={'\0'};/*找出2000内N的倍数,及包含N这个数字的数*/ for(i=1;i<=2000;i++) { if((i%N==0)|| ((i%N!=0)&&(containN(i,N)==true))) { p[K++]=i-pre; pre=i; } } p[K]='\0'; K=0; for(i=0;i<iTotalNum;i++) { aa[i]=i+1; } for(i=iTotalNum;i>=1;i--) { m=p[K++]; if(p[K]=='\0') { K=0; } t=(t+m-1)%i; printf("%u\n",aa[t]); for(j=t+1;j<i;j++) { aa[j-1]=aa[j]; } } return;}voidmain(void){ OutFunc(15,3); return;}滔裂草恳泽抉脚践炒附茄鞠债裙谢拨毗肾贱抖洽扇齐癸贝逐疑硬爹趋杯哇丫剂推犬颤讨银原躁官即斧