洛谷P1965 快速幂 c++

洛谷p1965 主要考查快速幂

题目: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 号小伙伴最后走到了第几号位置。

思路: 如 n=5,m=6,x=0。(有5个位子,编号从0到4,每次走编号加6,初始在0号位)
第一次:从0到6,6>5,实际到了一号位,所以可以发现m%n就是下次到的实际位置。

未命名绘图

代码实现:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,k,x;
ll ans;
void qp ()
{	
	ll a=10 % n;
	ans=m;
	while ( k>0)
	{
		if ( k%2) ans=ans * a % n;
		a=a * a % n;
		k/=2;
	}	
}
int main()
{
	cin>>n>>m>>k>>x;
	qp();
	ans=( ans+x )%n;
	cout<<ans;
}  

//非常简单的题,找规律就行。

posted @ 2026-09-13 09:25  Hina_LZQ  阅读(5)  评论(0)    收藏  举报