1. 程式人生 > >洛谷 #1965. 轉圈遊戲

洛谷 #1965. 轉圈遊戲

題意

for (int i = 1; i <= \(\ 10^k\); i++) (k += m) %= n

輸出最後的k

題解

行動n次就會回到起點,快速冪

除錯記錄

快速冪寫炸了

#include <cstdio>

using namespace std;

int n, m, k, x;

int pow(int num, int times, int mo){
    int ans = 1, t = num;
    while (times > 0){
        if (times & 1) (ans *=
t) %= mo; (t *= t) %= mo; times /= 2; } return ans; } int main(){ scanf("%d%d%d%d", &n, &m, &k, &x); k = pow(10, k, n); for (int i = 1; i <= k; i++) (x += m) %= n; printf("%d\n", x); return 0; }