题目链接:转圈游戏
题目思路:转一圈,位置(x+m)%n,转10^k圈, 位置:(x+10^k*m)%n
因为10^k太大,此题需要快速幂算法,快速幂算法指路->快速幂算法
贴代码:
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll binaryPow(ll a,ll b, ll x) //快速幂算法
{
ll ans = 1;
while(b > 0){
if(b&1){
ans = ans * a % x;
}
a = a * a % x;
b = b >> 1;
}
return ans;
}
int main()
{
int n, m, x;
ll k;
cin >> n >> m >> k >> x;
cout << (x + binaryPow(10,k,n)*m% n)%n << endl;
return 0;
}