题目:古代某法官要判决n个犯人死刑,他有一个荒唐的逻辑,将犯人首尾相接排成圆圈,然后从第1个人开始数起,每数到第m个犯人,就拉出来处决;然后再数m个,数到的犯人再被处决;……剩下的最后一个犯人可以赦免。编写程序给出哪一个人可以活下来。
用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=1000)。
输入:10 5
输出:3
#include<iostream>
using namespace std;
int Get(int n,int m)
{
if(n==1)
return 0;
else
{
return (Get(n-1,m)+m)%n;;
}
}
int main()
{
int m,n;
cin>>n>>m;
cout<<Get(n,m)+1;
return 0;
}
小结:
再一次加强了对于约瑟环的认识!由于今天调回文数的代码实践偏久,就不具体解释了,这里先空一下,等周末有空再补~
参考链接:https://blog.csdn.net/wusuopubupt/article/details/18214999
https://blog.csdn.net/si444555666777/article/details/81436377