P1965 转圈游戏

时间:2023-03-10 07:27:55
P1965 转圈游戏

很容易可以得到,答案应该是(x+m*10^k)%n

很显然,用O(n)一定会卡爆,所以用快速幂来算,或者找一下循环节也是可以的。

#include <bits/stdc++.h>
using namespace std;
int Fact(int x, int n, int mod) {
int ans = 1;
while(n) {
if(n & 1) ans = ans * x % mod;
x = x * x % mod;
n >>= 1;
}
return ans;
}
int main(int argc, char const *argv[])
{
int n, m, k, x;
cin >> n >> m >> k >> x;
cout << ((x%n) + ((m%n)*Fact(10, k, n))%n)%n;
return 0;
}