2008人站成一排报奇数的出列,其余依次报数,如此反复必剩下一人.编一程序问此人第一次报的是几?
来源:百度知道 编辑:UC知道 时间:2024/07/07 10:04:31
程序必须是用c语言编写的.
/*你是怎么口算的?能共享一下思想么?我这是用程序才算出来的*/
/*2008人站成一排报奇数的出列,其余依次报数,如此反复必剩下一人.编一程序问此人第一次报的是几?*/
#include <stdio.h>
#define MAX 2008
int n = MAX;
int d[MAX];
int pow(int a, int b);
int main(int argc, char *argv[])
{
int i, k = 0;
for (i = 0; i < MAX; i++)/*赋值 */
{
d[i] = i;
}
while (n > 1)
{
for (i = pow(2, k) - 1; i < MAX; i += pow(2, k+1))
{
n--;
d[i] = -1;
}
k++;
}
for (i = 0; i < MAX; i++)
{
if (d[i] != -1)
{
printf("result:%d\t", i+1);
}
}
return 0;
}
int pow(int a, int b)//指数函数
{
int i;
int s = 1;
for (i = 0; i < b; i++)
{
s *= a;
}
return s;
}
#include <stdio.h>
#include <stdlib.h>
int ma