P1965 [NOIP2013 提高组] 转圈游戏

Problem

给定\(n,m,k,x\)\(x\)每次会变成\((x + m) \bmod n\),称为1次变换,求经过\(10^k\)次变换后\(x\)的值。
\(n \le 10^6,m < n,k,x \le 10^9\)

Solution

看见\(n\)数据范围显然可以想到整循环节,但是我们不会推,咋办,发现求循环节至多\(\mathcal{O}(n)\),求完之后相当于求\(10^k \bmod t\)所对应的值,\(t\)即循环节长度,所以时间复杂度为\(\mathcal{O}(n + \log{k})\),不过\(t\)好像是可以\(\mathcal{O}(1)\)

posted @ 2021-09-11 00:41  luyiming123  阅读(69)  评论(0编辑  收藏  举报