约瑟夫环问题:求最后三个出去的人
#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std;
typedef long long ll;
int f[555555],a[11];
int main()
{
int t;
cin>>t;int m,n;
while(t--)
{
cin>>n>>m;
//求最后一个人的位置时f[1]=(m-1)%1;
//求倒数第二个人的位置时f[2]=(m-1)%2;
//求倒数第三个人的位置时f[3]=(m-1)%3;
for(int i=1;i<=3;i++)
{
f[i]=(m-1)%i;
for(int j=i+1;j<=n;j++)
{
f[j]=(f[j-1]+m)%j;
}
a[i-1]=(f[n]+1);
}
printf("%d %d %d\n",a[2],a[1],a[0]);
}
return 0;
}