转圈游戏

来源:互联网 发布:如何设置家庭网络共享 编辑:程序博客网 时间:2024/04/29 01:26

描述

n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏。按照顺时针方向给 n 个位置编号,从0 到 n-1。最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推。

游戏规则如下:每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,……,依此类推,第n − m号位置上的小伙伴走到第 0 号位置,第n-m+1 号位置上的小伙伴走到第 1 号位置,……,第 n-1 号位置上的小伙伴顺时针走到第m-1 号位置。

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

格式

输入格式

输入共 1 行,包含 4 个整数 n、m、k、x,每两个整数之间用一个空格隔开。

输出格式

输出共 1 行,包含 1 个整数,表示 10^k 轮后 x 号小伙伴所在的位置编号。

样例1

样例输入1[复制]

10 3 4 5

样例输出1[复制]

5
#include <set>#include <map>#include <queue>#include <deque>#include <cstdio>#include <string>#include <vector>#include <math.h>#include <time.h>#include <utility>#include <cstdlib>#include <sstream>#include <cstring>#include <stdio.h>#include <iomanip>#include <conio.h>#include <iostream>#include <algorithm>using namespace std;int n,m,x,k;int quick_time(int k){if(k==1)return 10;if(k%2==1)return quick_time(k-1)%n*10%n;return quick_time(k/2)%n*quick_time(k/2)%n;}int main(){cin>>n>>m>>k>>x;cout<<((quick_time(k)*m)%n+x)%n<<endl;return 0;}


0 0
原创粉丝点击