首页 > 试题广场 >

选大王

[编程题]选大王
  • 热度指数:2172 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从 1 开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王。
现在告诉你 n 和 m,请帮忙求出哪一只猴子能当大王。

输入描述:
输入包含多组数据。
每组数据包含两个正整数 n 和m(1≤ m < n ≤ 10000)。


输出描述:
对应每一组输入,输出猴王的编号 i(1≤i≤n)。
示例1

输入

7 3<br/>8 3

输出

4<br/>7
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>选大王</title>
</head>
<body>
</body>
<script>
var arr=[];
function king(n,m){
for (var i = 0; i < n; i++) {
arr.push(i);
}
for (var i = 0; i < n-m+1; i++) {
for (var j = 0; j < arr.length; j++) {
if (j==m-1) {
var len=arr.length;
for (var k = len-1; k >m-1; k--) {
arr.splice(0,0,arr[arr.length-1]);
arr.splice(arr.length-1,1);
}
arr.splice(arr.length-1,1)
}
}
if (arr.length==m-1) {
for (var j = 0; j < arr.length; j++) {
if (j%(m-1)==0) {
arr.splice(j,1)
}
}
}
}
return arr[0]+1;
}
// console.log(king(8,3));


</script>
</html>
发表于 2016-09-22 15:16:21 回复(0)