快速幂,水题
本题要点:
1、 10^k 次之后,x走到的位置是: (m * (10^k) + x) % n 。显然就是快速幂。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int MaxN = 1e7 + 10;
long long n, m, k, x;
long long mod;long long quick_pow(long long a, long long p)
{
long long ans = 1;while(p){
if(p & 1)ans = ans * a % mod;a = a * a % mod;p >>= 1;}return ans;
}void solve()
{
mod = n;long long ans = 1;ans = (quick_pow(10, k) % mod) * (m % mod);ans = (x + ans) % mod;printf("%lld\n", ans);
}int main()
{
scanf("%lld%lld%lld%lld", &n, &m, &k, &x);solve();return 0;
}/* 10 3 4 5 *//* 5 */