您的位置:首页 > 其它

几道笔试题的解法(五)

2010-03-31 21:24 302 查看
题目: 有编号从1到N的N个人坐成一圈报数,报到M的人出局,下一位再从1开始,如此持续,直止剩下一位为止,报告此人的编号X。输入N,M,求出X

分析:本题是著名的约瑟夫问题。

代码如下:

int SumResult(int N, int M)

{
int i = 0;
int k = 0;

for (i = 1; i <= N; i++)
{
k = (k + M) % i;
}

return ++k;
}

int main(void)
{
int n = 0;
int m = 0;

std::cout << "Please input two numbers to operate: " << '/n';
std::cin >> n >> m;

int lef = SumResult(n, m);

std::cout << "The last one is " << lef << '/n';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: