51Nod1074 约瑟夫环 V2

题意

约瑟夫环,N-1e18,K-1000

思路

由于K远小于N,后面i大了之后某些时候不用取模,可以加速。

代码

#include<iostream>
#include<cstdio>
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
ll n,k;
ll cur,t;
int main(){
	cin>>n>>k;
	cur=0;
	for(ll i=2;i<=n;i+=t+1){
		t=(i-cur)/k-1;
		if(t<0) t=0;
		if(i+t+1>n) t=n-i;
		cur=(cur+(t+1)*k)%(i+t);
	} 
	cur++;
	cout<<cur<<endl;
	return 0;
}
posted @ 2019-07-23 14:38  CCWUCMCTS  阅读(108)  评论(0编辑  收藏  举报