洛谷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;
}
//非常简单的题,找规律就行。

浙公网安备 33010602011771号