约瑟夫环Pro


在此之前先看看一般的约瑟夫问题


发现这个题唯一不一样的就是m,只要在递推的时候不断的更换m数组即可

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
int n,k;
int a[105],m[105],f[105]; 
int main(){
	while(~scanf("%d%d",&n,&k)){
		for(int i=1;i<=k;i++)scanf("%d",&m[i]);
		f[1]=0;
		int mod=(n-1)%k;
		if(mod==0)mod=k;
		for(int i=2;i<=n;i++){
		f[i]=(f[i-1]+m[mod])%i;	
			mod--;
		if(mod==0)mod=k;	
		}
		cout<<f[n]<<endl;
	}
     return 0;
}
posted @ 2021-12-05 10:50  wzx_believer  阅读(36)  评论(0编辑  收藏  举报