LG P1587 [NOI2016]循环之美

Description

牛牛是一个热爱算法设计的高中生。在他设计的算法中,常常会使用带小数的数进行计算。牛牛认为,如果在 $k$ 进制下,一个数的小数部分是纯循环的,那么它就是美的。现在,牛牛想知道:对于已知的十进制数$n$和 $m$,在 $k$ 进制下,有多少个数值上互不相等的纯循环小数,可以用分数$\frac xy$ 表示,其中$1 \leq x \leq n,1 \leq y \leq m$,且 $x,y$是整数。一个数是纯循环的,当且仅当其可以写成以下形式:

$$a. \dot{c_1} c_2 c_3 \dots c_{p-1} \dot{c_p}$$

其中,$a$ 是一个整数,$p \geq 1$;对于 $1 \leq i \leq p$,$c_i$是 $k$ 进制下的一位数字。

例如,在十进制下,$0.45454545……=0.\dot{4}\dot{5}$是纯循环的,它可以用 $\frac {5}{11}$ 、$\frac{10}{22}$等分数表示;在十进制下,$0.16666……=0.1\dot{6}$ 则不是纯循环的,它可以用 $\frac 16$等分数表示。需要特别注意的是,我们认为一个整数是纯循环的,因为它的小数部分可以表示成 $0$的循环或是 $k-1$ 的循环;而一个小数部分非 $0$ 的有限小数不是纯循环的。

Solution

 假设 $\frac{x}{y}$的循环节长度为 $l$

$\Rightarrow [\frac{xk^l}{y}]=[\frac{x}{y}]$

中括号表示小数部分

$$ \frac{xk^l}{y}-\lfloor\frac{xk^l}{y}\rfloor=\frac{x}{y}-\lfloor\frac{x}{y}\rfloor$$

$$ xk^l-\lfloor\frac{xk^l}{y}\rfloor*y=x-\lfloor\frac{x}{y}\rfloor*y $$

$$ xk^l\equiv x\mod y $$

$$ k^l\equiv1\mod y $$

$$ (k,y)=1 $$

要求最简分数,所以 $(x,y)=1$

所以所求为

$$ Ans=\sum_{i=1}^n\sum_{j=1}^m[(i,j)=1][(j,k)=1] $$

\begin{align}
f(n,m,k) & =\sum_{i=1}^n\sum_{j=1}^m[(i,j)=1][(j,k)=1]\\
& =\sum_{i=1}^n\sum_{j=1}^m[(i,j)=1]\sum_{d|(j,k)}\mu(d) \\
& =\sum_{i=1}^n\sum_{jd=1}^m[(i,jd)=1]\sum_{d|jd,d|k}\mu(d)\\
& =\sum_{d|k}\mu(d)\sum_{i=1}^n\sum_{j=1}^{\frac{m}{d}}[(i,jd)=1]\\
& =\sum_{d|k}\mu(d)\sum_{i=1}^n\sum_{j=1}^{\frac{m}{d}}[(i,j)=1][(i,d)=1]\\
& =\sum_{d|k}\mu(d)f(\frac{m}{d},n,d)
\end{align}

 处理边界,数论分块套杜教筛即可

[NOI2016]循环之美

 

posted @ 2020-10-18 21:02  QDK_Storm  阅读(137)  评论(0编辑  收藏  举报