当前位置: 代码迷 >> 综合 >> 洛谷 P1965 转圈游戏(快速幂,水题)
  详细解决方案

洛谷 P1965 转圈游戏(快速幂,水题)

热度:44   发布时间:2023-12-13 18:56:32.0

快速幂,水题
本题要点:
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 */