[NOIP2013 提高组] 转圈游戏

[NOIP2013 提高组] 转圈游戏

n 个小伙伴(编号从 0n1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从 0n1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第 nm 号位置上的小伙伴走到第 0 号位置,第 nm+1 号位置上的小伙伴走到第 1 号位置,……,第 n1 号位置上的小伙伴顺时针走到第 m1 号位置。

现在,一共进行了 10k 轮,请问 x 号小伙伴最后走到了第几号位置。

对于 100% 的数据,1<n<1060<m<n0xn0<k<109

解法:

相当于 x 号小伙伴每次在圆环上向前走了 m 步,走了 10k

则可以推出式子:

id=(x+m×10k) mod n

代码:

#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int LOG = 50;
int n,m,k,x;
int id;
int jump[LOG];
int qpow(int num,int x){
	int ans = 1,res = num;
	while(x){
		if(x & 1) ans = ans * res % n;
		x >>= 1,res = res * res % n;
	}
	return ans;
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>m>>k>>x;
	cout<<(x +(m * qpow(10,k)) % n) % n;
	return 0;
}
posted @   wyl123ly  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示