小白在线寻求帮助,这题怎么解答
说明: 50名队员围成一圈,顺序排号,从第一个开始报数(从1到7报数),凡报到3和7的人退出圈子,报到7后,剩下的人再继续从1到7报数,编程实现最后留下的是原来第几号队员
2020-05-21 12:42
程序代码:#include <stdio.h>
size_t josephus( size_t n, size_t a, size_t b )
{
size_t index = 0;
for( size_t i=0; i!=n; ++i )
index = (index+(i%2!=n%2?a:b))%(i+1);
return index;
}
int main( void )
{
printf( "%zu\n", josephus(50,3,4)+1 ); // 输出 40
}
2020-05-21 15:43
2020-05-22 09:45