题意
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;
}