AcWing 1455. 招聘
原题链接
中等
作者:
Belous
,
2020-05-09 22:10:42
,
所有人可见
,
阅读 1164
约瑟夫问题
#include <iostream>
using namespace std;
int arr[1000];
char getchar_T(void)
{
#define BufferMax 1024
static char buffer[BufferMax];
static int idx = BufferMax;
if(idx==BufferMax)
fread(buffer,1,sizeof(buffer),stdin),idx=0;
return buffer[idx++];
#undef BufferMax
}
int getint(void)
{
char ch;
int num=0;
while(ch=getchar_T(),!isdigit(ch))
continue;
num=ch-'0';
while(ch=getchar_T(),isdigit(ch))
num=num*10+(ch-'0');
return num;
}
int main(void)
{
int N=getint();
while(N--)
{
int n=getint(),m=getint();
for(int i=0;i!=m;++i)
arr[i]=getint();
int ans=0;
for(int i=2;i<=n;++i)
ans=(ans+arr[(n-i)%m])%i;
cout<<ans<<endl;
}
return 0;
}
老哥,怎么推出来的 orz
约瑟夫问题,推出递推公式就可以了,https://blog.csdn.net/belous_zxy/article/details/80559903
无法访问 qaq
https://blog.csdn.net/belous_zxy/article/details/80559903
可以的啊,在网上搜约瑟夫问题,其他的讲解也可以的