下载此文档

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


文档分类:资格/认证考试 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
问题描述
M个人围成一圈报数,数到N(1<N<10)的倍数或包含N这个数字时出圈,问剩下的最后一个人在原来的位置是多少?
报数规则:
1、从第一个人开始报数为1,下一个人报数为上一个人报数加1
2、报数的最大值为2000,如果报数超过2000,则下一个人重新从1开始报数
要求实现函数
int OutFunc (unsigned int iTotalNum, unsigned int iKey)
【输入】iTotalNum: 开始报数前的总人数, 0<iTotalNum<65535
     iKey:     题目中要求的数目N
【输出】无
【返回】剩下的人的原来的位置
示例
输入:iTotalNum =5,  iKey =3
返回:4
输入:iTotalNum =15,  iKey =3
返回:10
/* 出圈问题 */
#include <stdioh>
#define MAXSIZE 1000
bool containN(unsigned int i, unsigned int N)
{
unsigned int temp = 0;

while(i > 0)
{
temp = i % 10;
i = i / 10;
if((temp == N) || (i == N))
{
return true;
}
}
return false;
}
void OutFunc (unsigned int iTotalNum, unsigned int iKey)
{
unsigned int N = iKey;
unsigned int i = 0;
unsigned int j = 0;
unsigned int K = 0;
unsigned int m = 0;
unsigned int t = 0;
unsigned int pre = 0;
unsigned int aa[MAXSIZE] = {'\0'};

unsigned int p[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;
pri

华为上机---出圈问题及答案 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数3
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1314042****
  • 文件大小22 KB
  • 时间2021-01-18