题目描述
有N个人绕成一个圈,按照顺序开始报数(1-N),第一个人从1开始依次报数,报到3的人淘汰,接下来的人又从1依次开始报数,报到3的人淘汰,直到只剩下最后一个人,问最后留下了的是原来第几号的那个人。
样例输入
10
样例输出
4
规律:
int f(int n,int m)
{
int x=0;
for(int i=2;i<=n;i++)
x=(x+m)%i;
return x+1;//如果从第q个人开始报数,返回x+q;
}
#include<bits/stdc++.h>
using namespace std;
int f(int n,int m)
{
int x=0;
for(int i=2;i<=n;i++)
x=(x+m)%i;
return x+1;
}
int main()
{
int n;
cin>>n;
cout<<f(n,3);
return 0;
}