Problem:第k人
Description:
TT在跟朋友一起做游戏,
游戏规则:n个小朋友(从1开始编号)手拉手,从第一个小朋友开始报数,喊出k的小朋友从圈中出去,然后下个小朋友从1开始报数。
当圈中只剩下一个小朋友的时候结束。TT想知道谁会胜出。
Input:
T(T组,T<=10)
T行,每行两个个数字n,k代表当前有n个小朋友(n<=1000)k如上述(k<=1e5)
Output:
对每组输出胜出者的编号
Sample Input:
1
5 2
Sample Output:
3
Note:
第一个出去的是2号:1 3 4 5
第二个出去的是4号,1 3 5
第三个出去的是1号,3 5
第四个出去的是5号,3
3胜出
Language:C++
#include <iostream>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
int n,k;
cin>>n>>k;
int num[1010];
for(int i=0;i<n;i++) num[i]=i;
int now=0;
while(n>1)
{
now+=k-1;
now%=n;
for(int i=now;i<n-1;i++)
num[i]=num[i+1];
n--;
}
cout<<num[0]+1<<endl;
}
return 0;
}